如何解决博斯。Python?

2024-05-23 19:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图把C++和Python联系起来。Boost.Python. 在

我有VisualStudio2012速成版、Python2.7和Boost 1.54。在

我按照Boost官网的说明在我的机器上安装了Boost,这意味着我遵循了以下步骤:

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

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

然后我在财产委员会进行了这样的操作:

    < L> > P> >将C++添加到{C/C++-&>通用和>;附加目录。

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

  2. > p> C5+> }到C/C++ +GT;预编译头-GT;预编译头。

我创建了一个空项目,其中的源代码非常简单,如下所示(我实际上试图运行一个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'

有人能帮我吗?在


Tags: 代码gtbuild目录includelocal错误error
2条回答

下面的答案试图解决这个问题

error LNK1104: cannot open file 'python27_d.lib'

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

调试/发布

调试版本有符号信息,通常不进行优化。此版本用于调试,其中as Retail version是发布的版本。在

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

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

包括:

  #include <python.h>

Boost没有包含python api。。。你需要用python27.lib构建boost

相关问题 更多 >