python - 无法与 boost.python 和 python3 链接

标签 python c++ python-3.x boost boost-python

当我尝试在 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.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文件,重命名您的 boost_python3-vc141-mt-1_64通过删除 lib 和 dll 文件 3 .

关于python - 无法与 boost.python 和 python3 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038513/

相关文章:

python - 如何在 python 中一次将多个文件从本地服务器移动到 HDFS?

python - 如何对包含多个数值列表的字典进行排序?

python - 从for循环中的字典键在python中创建动态变量

python - 如何对字符串中的日期进行排序? (Python)

python - 从 matlab2015a 调用 python

c++ - 有没有办法在 Emacs 中同时启用 Objective-C 模式和 C++ 模式?

javascript - url_for 用 jquery 做奇怪的事情

c++ - 如何将带有默认参数的模板函数传递给 std::call_once

c++ - 是否可以使用 C++ 标准 native 库创建 GUI 应用程序?

python - 是什么让用户定义的类不可散列?