gpt4 book ai didi

c++ - 如何解决 Boost.Python 中的 __imp___Py_NoneStruct 错误?

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:38 25 4
gpt4 key购买 nike

我正在尝试将 C++ 和 Python 与 Boost.Python 联系起来。

我有 Visual Studio 2012 Express 版本、Python 2.7 和 Boost 1.54。

我按照Boost官网的说明在我的机器上安装了Boost,也就是说我按照以下步骤操作:

  1. 我下载预构建的二进制文件并将其安装在 C:\local\boost_1_54\ .

  2. 我运行 bjam b2 --build-dir=C:\local\boost_1_54 toolset=msvc11.0 --build-type=complete stage .

然后我在属性面板中进行了这样的操作:

  1. 添加C:\local\boost_1_54\; C:\Python27\include;到 C/C++->General->Additional Include Directories。

  2. 添加C:\local\boost_1_54\libs; C:\local\boost_1_54\lib64-msvc-11.0; C:Python27\libs;链接器->常规->附加库目录。

  3. 设置"Not Using Precompiled Headers"到C/C++->Precompiled Header->Precompiled Header.

我创建了一个空项目,其中的源代码非常简单如下(我实际上尝试运行一个hello world示例,但不得不减少代码以排除干扰):

#include <boost/python.hpp>

int main()
{
return 0;
}

但是,当我尝试构建解决方案时,会弹出两个错误:

error LNK2001: unresolved external symbol __imp___Py_NoneStruct

error LNK1120: 1 unresolved externals

我评论了 #include <boost/python.hpp> 这行,然后错误就消失了。

让我感到困惑的是,我发现 python.hpp 位于它应该位于的文件夹中。

我可以知道我哪里错了吗?

============================================= ===========

编辑:

我试过使用 #include <Python.h>在代码中。但它引发了另一个错误

error LNK1104: cannot open file 'python27_d.lib'

谁能帮帮我?

最佳答案

下面的回答试图解决问题

error LNK1104: cannot open file 'python27_d.lib'

_d 后缀表示它正在搜索库的调试版本。 Python 安装是一个发布版本,因此您不能将调试项目与其链接。

调试/发布

Debug版本有符号信息,一般没有优化。此版本用于调试,因为零售版是发布的版本。

如果您在 Debug模式下构建项目,它会始终尝试与调试库链接。为了克服这个问题

  1. 创建发布版本而不是调试。然后,您的项目将尝试链接 python27.lib 而不是 python27_d.lib。引用How to: Create a Release Build
  2. 您还可以下载 Python 源代码并使用 VS2008 构建它(是的,Python 2.7 是使用 VS 2008 构建的)。同样,如果您的目标是 x64,则至少需要 VS2008 专业版。这将生成 python27_d.lib。引用Python Developer’s Guide

关于c++ - 如何解决 Boost.Python 中的 __imp___Py_NoneStruct 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com