与 boost.python 和 python3 链接时出现问题

Trouble linking with boost.python and python3

本文关键字:问题 链接 python3 boost python      更新时间:2023-10-16

当我尝试在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

在我的项目配置.jam文件中using python : 3.6 ;,它产生

boost_python3-vc141-mt-1_64.dllboost_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文件,请通过删除3来重命名boost_python3-vc141-mt-1_64 lib 和 dll 文件。