c++ - 将静态库链接到 Boost Python(共享库)- 导入错误

标签 c++ python boost linker compilation

我正在构建一个依赖于另一个外部库 (STXXL) 的 Boost Python 模块(.so 共享库文件)

虽然我可以构建和导入示例 Boost Python 模块,但在混合使用 STXXL 时我遇到了问题。特别是在 python 中运行 import fast_parts

我得到 ImportError: ./fast_parts.so: undefined symbol: _ZN5stxxl10ran32StateE

这告诉我 STXXL 库没有被链接,但我不确定这是怎么回事,因为我正在链接它并且链接器没有给我任何错误。值得注意的是,我可以使用 STXXL 成功构建和运行独立程序,据我所知,这些库存储在如下所示的 lib 目录中的 .a 存档中。我已将 Makefile 缩减为单个命令,如下所示:

g++ -I/home/zenna/Downloads/stxxl-1.3.0/include -include stxxl/bits/defines.h -I/home/zenna/local/include -I/usr/include/python2 .6 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -O3 -Wall -g -DFOO=BAR -pthread -L/home/zenna/Downloads/stxxl-1.3.0/lib/-lstxxl -L/home/zenna/local/lib/-lboost_python -lpython2.6 -fPIC -shared -o fast_parts.so partition.cpp

有什么建议吗?

最佳答案

我假设是 Linux,如果这不正确请评论。 libfast_parts.soldd 输出是什么样的?是否表示未找到libstxxl.so

您可能需要在 LD_LIBRARY_PATHlibfast_parts.so 的 rpath 中添加 /home/zenna/Downloads/stxxl-1.3.0/lib/

-Wl,-rpath,/home/zenna/Downloads/stxxl-1.3.0/lib -L/home/zenna/Downloads/stxxl-1.3.0/lib -lstxxl

关于c++ - 将静态库链接到 Boost Python(共享库)- 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518069/

相关文章:

c++ - 或 C++ 中的语句

c++ - 在 RELEASE 中构建时找不到 Msvcr90d.dll

python - SimpleCV:打开 Display() 时回溯错误

c++ - 是否可以在循环中多次调用 boost :asio io_service. run()?

c++ - 为什么我的 VS2010 native C++ 应用程序不会突然启动,并给出并排错误?

c++ - 它是否等同于使用 null iv 执行 CBC 模式?

python - Opencv全向标定校正

python - 如何在 Python 脚本的后台播放音频(playsound)?

c++ - 代码:: block 输出 "error: ld returned 1 exit status"没有其他

c++ - 使用共享指针 vector boost lambda