为什么不#include <python.h>工作?</python.h>

时间:2013-04-24 19:56:01

标签: c++ python visual-studio-2010 wrapper

我正在尝试使用"#include <Python.h>"在C ++中运行Python模块,但是,在将项目的“Additional Include Dependencies”设置为“\ include”后,我在debuging时遇到以下错误,

LINK : fatal error LNK1104: cannot open file 'python27_d.lib'

我读到我应该下载Python的开发版本,但我没有找到相关的链接,另外,我不需要将文件'python27_d.lib'复制到“libs”文件夹?

请注意,我正在使用Anaconda的Python发行版。

提前致谢!

6 个答案:

答案 0 :(得分:24)

我通常在调试版本中使用非调试Python库来避免这种情况。通常,这会导致代码如下:

#ifdef _DEBUG
  #undef _DEBUG
  #include <Python.h>
  #define _DEBUG
#else
  #include <Python.h>
#endif

在包含Python.h期间隐藏_DEBUG的定义。

答案 1 :(得分:8)

我对python知之甚少,但是消息表明python27_d.lib不存在,或者至少不存在链接器正在寻找它的地方。

您已经修复了编译器包含问题,现在使用Windows资源管理器找到python27_d.lib文件,并将该路径添加到Additional Library Dependencies路径。它位于配置 - &gt;链接器 - &gt;一般 - &gt;其他图书馆目录。

“_ d”表示它是一个调试库,所以你需要一个用于你的Debug配置,而那个没有“_d”(可能)用于你的发布配置。

答案 2 :(得分:4)

将visual studio置于发布模式而不是调试。

答案 3 :(得分:1)

您不一定要使用Python调试版本...... [即使你不是usimng boost]我会看一下boost.python文档,他们有一个Python.h的包装器来处理所有的windows调试问题,这样你就可以针对发布的python dll构建一个调试扩展

http://www.boost.org/doc/libs/1_53_0/libs/python/doc/building.html#id19 Python调试构建

答案 4 :(得分:1)

我在尝试使用Boost.python从C ++访问Anaconda python包时遇到了类似的错误。首先,我要说的是我对C ++ Boost库的个人印象是它们是一个很好的主意,文档不完整。 boost.org上有大量的文档,但它似乎总是遗漏了一些关键的细节,作者似乎认为这些细节太微不足道了。但是,让我离开我的肥皂盒......

我正在[希望最终]弄清楚如何让Boost.Python在我的系统上工作的持续动力是有很多优秀的Python科学软件包[SymPy,Numpy,SciPy,matplotlib等]包含在Anaconda发行版,从使用Qt Creator构建的C ++项目访问它们真的很棒。而Boost文档似乎确实表明Boost.Python应该为我做这件事。唉,那些文档似乎遗漏了作者似乎认为过于琐碎而无法提及的关键细节......

无论如何,最初,我遇到了一个构建错误,表明无法找到python.h。我通过将这两个语句添加到我的Qt Creator项目的.pro文件中来解决这个问题,该文件告诉qmake Boost在哪里安装了包含文件,以及Anaconda在我的系统上安装了python.h文件的位置:

INCLUDEPATH += C:\boost_1_55_0
INCLUDEPATH += C:\Anaconda\include

之后,我收到一个LNK1104错误,表明&#39; python27.lib&#39;无法找到。我通过将这两个语句添加到我的.pro文件中来解决这个问题。第一个告诉qmake在哪里可以找到Anaconda的python27.lib文件。第二个告诉qmake在哪里找到boost.python二进制文件:

LIBS += "C:/Anaconda/libs"
LIBS += "C:/boost_1_55_0/stage/lib/libboost_python-vc110-mt-gd-1_55.lib"

但是,就我迄今为止所取得的那样。我现在得到一个错误,表明它无法打开文件&#39; C:/Anaconda/libs.obj'我还没有找到解决办法。当然,错误是由该文件不存在引起的。挑战在于发现为什么要寻找它以及在哪里找到它。

答案 5 :(得分:0)

在Visual Studio上,您需要为项目添加“其他包含目录”。步骤如下。 右键单击项目->属性-> c / c ++->其他包含目录->将其指向“ Python \ include”文件夹(例如:c:\ python \ include)。