【发布时间】:2013-04-22 17:55:56
【问题描述】:
我正在尝试使用 Mingw 在 Windows 上编译 autodiff python 库 pyadolc。需要boost python调用底层c++库adol-c。
我首先用 mingw 编译了 boost_python 库 (dll)。生成的dll命名为libboost_python-mgw46-mt-1_53.dll和libboost_python-mgw46-mt-1_53.dll.a,分别位于/mingw/bin和/mingw/lib中。
然后,当我构建 pyadolc 时,构建脚本会尝试使用命令 -lboost_python。它失败了,因为 dll 被命名为 libboost_python-mgw46-mt-1_53.dll,而不是 libboost_python.dll。
所以我在 /mingw/bin 中将 dll 重命名为 libboost_python.dll。它工作正常,一切都很好。
但是,当我使用 python shell 时
导入 adolc
它给了我一个错误:ImportError: No dll found for _adolc(类似的东西)。然后发现是因为在找libboost_python-mgw46-mt-1_53.dll。
我的问题是:dll 命名是如何工作的?处理这种情况的正确方法是什么?我应该修改构建脚本还是应该重命名 dll?我知道在 linux 中,我可能可以创建一个 libboost_python.so 到 libboost_python-xxxx-mt-1_53.so 的符号链接。但是在 Windows xp 中,文件的符号链接并不是那么容易。
【问题讨论】:
-
Boost 的库命名在这里定义:boost.org/doc/libs/1_53_0/more/getting_started/…