2013-04-22 84 views
0

我试图编译与Mingw Windows上的autodiff python库,pyadolc。它需要boost python来调用底层的C++库adol-c。我应该如何处理“错误”命名的dll?

我首先用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。

因此,我将dll更名为/ mingw/bin中的libboost_python.dll。它工作,一切都很好。

然而,当我在Python Shell TRED

进口adolc

它给了我一个错误:导入错误:未找到_adolc(类似的东西)DLL。然后我发现它是因为它在寻找libboost_python-mgw46-mt-1_53.dll。

我的问题是:如何命名的工作?处理这种情况的正确方法是什么?我应该修改构建脚本还是应该重命名该dll?我知道在Linux中,我可能只需要创建libboost_python.so到libboost_python-xxxx-mt-1_53.so的符号链接。但在Windows XP中,文件的符号链接并不那么容易。

+0

Boost的库命名在这里定义:http://www.boost.org/doc/libs/1_53_0/more/getting_started/windows.html#library-naming – 2013-05-10 16:50:10

回答

0

结最好的可能性是改变你的构建脚本,以指向-lboost_python-mgw46-mt-1_53.dll

如果您重命名libboost_python-mgw46-mt-1_53.dll您必须将libboost_python-mgw46-mt-1_53.dll.a重命名为。

经常有dll's一个相互参照,如果你现在只有重命名,原来的名字没有找到。

所以,不要rename,而是使用copy

副本

libboost_python-mgw46-mt-1_53.dll.alibboost_python.a

和复制

libboost_python-mgw46-mt-1_53.dlllibboost_python.dll

采用此方法有两个版本。

相关问题