15

我正在尝试使用 C++ 运行 Python 模块"#include <Python.h>",但是,在将项目的“附加包含依赖项”设置为“\include”后,调试时出现以下错误,

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

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

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

提前致谢!

4

6 回答 6

28

我通常通过在调试版本中使用非调试 Python 库来规避这一点。通常,这会导致如下代码:

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

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

于 2015-09-06T16:44:04.340 回答
8

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

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

“_d”表示它是一个调试库,因此您需要一个用于调试配置,一个没有“_d”(可能)用于您的发布配置。

于 2013-04-24T20:02:08.243 回答
5

将 Visual Studio 置于发布模式而不是调试。

于 2015-03-09T19:19:07.047 回答
1

您不一定必须使用 Python 调试版本... [即使您不使用 boost问题,以便您可以针对发布的 python dll 构建调试扩展。

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

于 2013-06-13T11:46:27.753 回答
1

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

我 [希望,最终] 弄清楚如何让 Boost.Python 在我的系统上工作的持续动力是,Anaconda 发行版中包含了很多很棒的 Python 科学包 [SymPy、Numpy、SciPy、matplotlib 等]从使用 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 错误,表明找不到“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”。当然,该错误是由该文件不存在引起的。挑战在于发现为什么要寻找它以及在哪里找到它。

于 2014-05-14T08:33:00.560 回答
1

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

于 2019-07-02T06:40:33.740 回答