2014-04-18 27 views
1
将C++到Python错误

我通过BoostPython库暴露一个简单的C++代码的Python:从BoostPython

#include <boost/python/detail/wrap_python.hpp> 
#include <boost/python.hpp> 

using namespace boost::python; 

bool test_api(void){ 
    return true; 
}; 

BOOST_PYTHON_MODULE(materials) { 

    def("test_api", test_api); 

} 

后,我尝试导入该模块,Python解释器返回错误:

ImportError: ./example.so: undefined symbol: _Py_RefTotal 

我已经将该模块静态链接到boost python库,并且Python动态库libpython3.2m.so和libpython3.2m.so.1.0存在于工作目录中。

关于在哪里可以找到丢失符号的任何建议?

+0

尝试包括'#include '你需要这个包含模块定义。 –

+0

不行。它仍然缺少符号。我注意到libboost_python.a和libboost_python.so – KlingonJoe

+1

中的符号是未定义的这里是这样的:http://stackoverflow.com/a/19894643/2050745 –

回答

0

Boost库与Python安装不一致。

cd boost_source 
./bootstrap.sh --with-libraries=python --prefix=../boost_target 

配置加速至指向正确的Python安装:

vim tools/build/v2/user-config.jam 

编辑指向Python的行:

using python : version_number 
      : path_to_python_executable 
      : path_to_python_include_directory 
      : path_to_python_library_directory 

然后,运行构建系统:

./b2