2014-01-23 3 views
1

위버로 업그레이드 되었기 때문에 부스트 - 파이썬의 macports 버전이 작동하지 않습니다.매버릭스에서 macports에 의해 설치된 부스트 - 파이썬과의 링크 오류

gcc48 및 boost + python33 포트가 설치되었습니다.

나는 C++ 11 또는 C++ (11)없이이 프로그램을 컴파일하려고 : 나는 cmake를 사용

#include <boost/python.hpp> 
class A {}; 
BOOST_PYTHON_MODULE(libblah) { 
    boost::python::class_<A>("A"); 
} 

하지만, 생성 된 빌드 명령은 내가 할 그 링커 오류와 함께 다음과 같습니다 :

[100%] Building CXX object CMakeFiles/a.dir/a.cc.o 
g++ -Da_EXPORTS -std=gnu++0x -save-temps=obj -arch x86_64 -fPIC -I/Users/neil/nn/src -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/Library/Frameworks/Python.framework/Headers -F/usr/local/Qt-5.2.0/lib -I/usr/local/Qt-5.2.0/lib/QtCore.framework/Headers -I/usr/local/Qt-5.2.0/mkspecs/macx-clang -I/usr/local/Qt-5.2.0/lib/QtGui.framework/Headers -I/System/Library/Frameworks/OpenGL.framework/Headers -I/usr/local/Qt-5.2.0/lib/QtOpenGL.framework/Headers -I/usr/local/Qt-5.2.0/lib/QtWidgets.framework/Headers -I/opt/local/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I/Users/neil/nn/src/. -o CMakeFiles/a.dir/a.cc.o -c /Users/neil/nn/src/a.cc 
Linking CXX shared module liba.so 
g++ -std=gnu++0x -save-temps=obj -arch x86_64 -bundle -Wl,-headerpad_max_install_names -o liba.so CMakeFiles/a.dir/a.cc.o -L/opt/local/lib -L/Users/neil/nn/src /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/libpython3.3.dylib /opt/local/lib/libboost_python-mt.dylib -Wl,-rpath,/opt/local/lib -Wl,-rpath,/Users/neil/nn/src 
Undefined symbols for architecture x86_64: 
    "boost::python::objects::function_object(boost::python::objects::py_function const&, std::pair<boost::python::detail::keyword const*, boost::python::detail::keyword const*> const&)", referenced from: 
     boost::python::api::object boost::python::detail::make_function_aux<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*>, mpl_::int_<0> >(void (*)(_object*), boost::python::default_call_policies const&, boost::mpl::vector2<void, _object*> const&, std::pair<boost::python::detail::keyword const*, boost::python::detail::keyword const*> const&, mpl_::int_<0>) in a.cc.o 
    "boost::python::objects::register_dynamic_id_aux(boost::python::type_info, std::pair<void*, boost::python::type_info> (*)(void*))", referenced from: 
     void boost::python::objects::register_dynamic_id<A>(A*) in a.cc.o 
ld: symbol(s) not found for architecture x86_64 

내가 직접 부스트를 설치하지 않고이 버그를 해결하려면 어떻게해야합니까? 이 Related question와 마찬가지로, 라이브러리

nm libboost_python-mt.dylib | c++filt | grep boost::python::objects::function_object 

의 기호는 찾을 수 있습니다

0000000000013d60 T boost::python::objects::function_object(boost::python::objects::py_function const&) 
0000000000013d00 T boost::python::objects::function_object(boost::python::objects::py_function const&, std::__1::pair<boost::python::detail::keyword const*, boost::python::detail::keyword const*> const&) 

그러나, 그들은 수 std 한 : 정의되지 않은 심볼 오류가 기대 일치하지 않는 __ 1 접두사.

답변

0

컴파일러를 clang++으로 변경했는데 효과가있었습니다. 더 나은 솔루션을 선호했을 것입니다.