为什么';t#包括<;Python.h>;工作 我试图用C++代码“python”< y/Cube >运行Python模块,但是,在将项目的“附加依赖项”设置为“\包含”之后,在调试时,会得到以下错误, LINK : fatal error LNK1104: cannot open file 'python27_d.lib'

为什么';t#包括<;Python.h>;工作 我试图用C++代码“python”< y/Cube >运行Python模块,但是,在将项目的“附加依赖项”设置为“\包含”之后,在调试时,会得到以下错误, LINK : fatal error LNK1104: cannot open file 'python27_d.lib',c++,python,visual-studio-2010,wrapper,C++,Python,Visual Studio 2010,Wrapper,我读到我应该下载Python的开发版本,但我没有找到相关链接,另外,我不需要将文件“python27_d.lib”复制到“libs”文件夹吗 请注意,我使用的是Python的Anaconda发行版 提前谢谢 我对python了解不多,但消息表明python27_d.lib要么不存在,要么至少在链接器寻找它的地方不存在 您已经修复了编译器包含问题,现在使用Windows资源管理器查找python27_d.lib文件,并将该路径添加到其他库依赖项路径。它位于配置->链接器->常规->附加库目录下 “

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

请注意,我使用的是Python的Anaconda发行版


提前谢谢

我对python了解不多,但消息表明python27_d.lib要么不存在,要么至少在链接器寻找它的地方不存在

您已经修复了编译器包含问题,现在使用Windows资源管理器查找python27_d.lib文件,并将该路径添加到其他库依赖项路径。它位于配置->链接器->常规->附加库目录下


“\u d”表示它是一个调试库,因此您需要在调试配置中使用该库,在发布配置中使用不带“\u d”(可能)的库。

您不必使用Python调试构建。。。 [即使您没有使用boost]我也会看看boost.python文档,其中有一个处理所有windows调试问题的python.h包装,这样您就可以根据发布的python dll构建调试扩展


Python调试建立了

,在尝试使用BooSt.python访问C++的AcANNDA Python包时,我遇到了类似的错误。让我先说,我个人对C++ Boost库的印象是,它们是一个伟大的想法,文档不完整。在BooSt.Org上有大量的文档,但是它似乎总是忽略那些作者认为太琐碎的琐碎细节,不必费心提及。但是,让我离开我的肥皂盒

Py>我正在不断地推动力,希望能最终得到提升。Python在我的系统上工作是因为有很多伟大的Python科学软件包[Salyy,NuMpy,SciPy,MatPultLIB等]被包含在AcANDA中,从Qt Creator构建的C++项目中访问它们真的很棒。Boost文档似乎确实建议Boost.Python应该为我这样做。唉,那些文档似乎忽略了那些作者认为太琐碎而不必提及的重要细节…

无论如何,最初,我得到了一个生成错误,表明找不到python.h。我通过将这两条语句添加到Qt Creator项目的.pro文件中来解决这个问题,这两条语句告诉qmake Boost在哪里安装了include文件,Anaconda在我的系统上在哪里安装了python.h文件:

INCLUDEPATH += C:\boost_1_55_0
INCLUDEPATH += C:\Anaconda\include
之后,我得到了一个LNK1104错误,表明找不到“python27.lib”。我通过将这两条语句添加到我的.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"

但是,这是我迄今为止所做的。我现在收到一个错误,指示它无法打开文件“C:/Anaconda/libs.obj”,我尚未找到修复程序。当然,错误是由该文件不存在引起的。挑战在于发现为什么要寻找它以及在哪里找到它。

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

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

#ifdef _DEBUG
  #undef _DEBUG
  #include <Python.h>
  #define _DEBUG
#else
  #include <Python.h>
#endif
\ifdef\u调试
#未定义调试
#包括
#定义调试
#否则
#包括
#恩迪夫

如果在Visual studio上包含Python.h.

时隐藏了_DEBUG的定义,则需要为项目添加“其他包含目录”。步骤如下。
右键单击project->properties->c/c++->Additional Include Directory->将其指向“Python\Include”文件夹(例如:c:\Python\Include)。

您所说的“在c++中运行Python模块”是什么意思?要做到这一点,你必须这样做。仅仅做
#include
并不能做到这一点。同时,你读过和(为了嵌入)了吗?您是打算静态嵌入解释器,还是动态嵌入解释器?您从哪里获得要嵌入的解释器?仅从Python源代码构建Python库可能更容易。@Aya,有趣的是,我如何构建Python库?从阅读开始。谢谢,那么我如何获取调试库?啊,抱歉,我认为这只是VS问题。环顾四周,似乎发布了发行版(无“d”)而不是“d”。人们在这里找到了两种解决方法:我尝试了解决方案“#define MS#u NO_COREDLL”,它似乎可以工作,感谢一百万:),但我真的不明白为什么python.h会根据预处理器指令显式链接到调试或发布库。我会把这个问题留给项目的配置,正是这个答案和上面的答案结合起来解决了我的问题。因此,步骤是:(1)设置为释放模式,而不是调试,(2)设置链接器以指向my Python path.DOH!这就是解决办法!只需确保您的调试版本链接到python27.lib而不是python27\u d.lib。