当我尝试在 Win10 上的 Visual Studio 2017 中编译 boost.python 'Hello World' 程序时,遇到以下链接错误:
LNK1104 cannot open file 'boost_python-vc141-mt-1_64.lib'
但是,我想与 python3 版本链接。我用这个命令构建了我的 boost.python 库
b2 --with-python variant=release link=shared address-model=64
在我的 project-config.jam 文件中使用 using python : 3.6 ;
,生成
boost_python3-vc141-mt-1_64.dll
和 boost_python3-vc141-mt-1_64.lib
我不知道为什么我的项目试图链接 python2 版本。我从未在任何地方指定要链接哪个 boost.python 库,而且我不知道在哪里更改它。
如果重要的话,这是我试图编译的 c++ 程序(到 x64 .dll 中)
#include <boost/python.hpp>
char const* greet() {
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext) {
using namespace boost::python;
def("greet", greet);
}
最佳答案
根据我的经验,在 Windows/VC++ Boost.Python 上的自动链接总是搜索 boost_python-vc<blah-blah-blah>.lib
无论 Python 版本如何。当针对 Python 3 构建时,b2 实际上会生成 2 组 lib 文件:boost_python-vc...
和 boost_python3-vc...
.它们是相同的,只是名称不同。所以如果你没有 boost_python-vc141-mt-1_64.lib
文件,重命名您的 boost_python3-vc141-mt-1_64
通过删除 lib 和 dll 文件 3
.
关于python - 无法与 boost.python 和 python3 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038513/