首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接libboost_python时发生错误

链接libboost_python时发生错误
EN

Stack Overflow用户
提问于 2011-12-06 01:25:17
回答 1查看 4.4K关注 0票数 1

我想为自己构建这个openNERO。根据它的建筑教程,我还用python2.7.2构建了Boost 1.48。使用Boost成功地编译了openNERO。但是当它试图链接时,ld抱怨说

代码语言:javascript
复制
CMakeFiles/OpenNERO.dir/scripting/scripting.cpp.o: In function `initOpenNero':
~/svn/opennero/trunk/source/scripting/scripting.cpp:21: undefined reference to `boost::python::detail::init_module(char const*, void (*)())'
/usr/local/lib/libboost_python.so: undefined reference to `PyModule_Create2'
/usr/local/lib/libboost_python.so: undefined reference to `PyBytes_AsString'
/usr/local/lib/libboost_python.so: undefined reference to `PyBytes_Size'
/usr/local/lib/libboost_python.so: undefined reference to `_PyUnicode_AsString'
/usr/local/lib/libboost_python.so: undefined reference to `PyUnicode_InternFromString'
collect2: ld returned 1 exit status

有人能在这个问题上给我一些提示吗?谢谢~

更新1:删除

更新2:感谢这个职位。我使用nm检查init_module的签名,但是它打印:

代码语言:javascript
复制
$nm libboost_python.so.1.48.0 |c++filt|grep init_module
0002e710 T boost::python::detail::init_module(PyModuleDef&, void (*)())

下面是来自源文件的片段

代码语言:javascript
复制
#  if PY_VERSION_HEX >= 0x03000000
BOOST_PYTHON_DECL PyObject* init_module(PyModuleDef&, void(*)());
#  else
BOOST_PYTHON_DECL PyObject* init_module(char const* name, void(*)());
#  endif

所以它就是Python3.x。但是我确实用参数--with-python-version=2.7构建了Boost。此外,我使用update-alternatives选择Python2.7。那么,为什么PY_VERSION_HEX仍然不正确呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 10:07:29

我记得我第一次用python3.2构建了boost,所以我删除了生成的所有文件并重新构建了boost。这次一切都是正确的。似乎旧的文件不会被覆盖。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8394207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档