19

我试图#include <Python.h>在我的 C++ 代码中,当我去编译我的代码时,我得到了这个错误:

fatal error LNK1104: cannot open file 'python33_d.lib'

我试图python33_d.lib在我的计算机上找到包含在我的链接器依赖项中,但我找不到它。我已经能够找到python33.lib

在哪里可以找到python33_d.lib,或者如何解决此问题?

4

6 回答 6

31

来自python 错误跟踪器的简单解决方案:

#ifdef _DEBUG
  #undef _DEBUG
  #include <python.h>
  #define _DEBUG
#else
  #include <python.h>
#endif
于 2016-07-03T19:46:46.943 回答
24

如果您需要调试版本(就像我在工作中所做的那样),可以自己构建库:

  1. http://www.python.org/download下载源代码压缩包
  2. 解压 tarball(7zip 可以解决问题)并进入生成的目录(应该类似于 Python-3.3.2)。
  3. 从 Python 目录中,转到 PCBuild 文件夹。这里有两个重要的文件:readme.txt,其中包含在 Windows 中构建 Python 的说明(即使它使用 UNIX 换行样式...),以及 pcbuild.sln,它是构建 Python 的 Visual Studio 解决方案。
  4. 在 Visual Studio 中打开 pcbuild.sln。(我假设您使用的是 Visual Studio 10;readme.txt 包含针对旧版本 Visual Studio 的特定说明。)
  5. 确保将 Visual Studio 设置为“调试”配置,然后为您的适当架构(x64 或 Win32)构建解决方案。您可能会遇到一些失败的子项目,但并非所有子项目都是构建 python33_d 所必需的;据我统计,有 8 个构建失败,但我还是得到了一个可以工作的 .lib 文件。
  6. 您将在 PCBuild 文件夹(如果构建 Win32)或 amd64 子文件夹(如果构建 x64)中找到 python33_d.lib 和 python33_d.dll。
于 2013-07-15T16:39:29.067 回答
18

*_d.lib用于调试构建。改为切换到发布版本。

于 2013-06-10T16:31:06.953 回答
11

如果您通过 python.org 上的安装程序安装 python,您可以通过在安装时选择“自定义安装”来告诉安装程序包含调试符号和二进制文件,例如 pythonXX_d.dll 文件(我认为它在第二个自定义页面上)。如果您对自己构建项目不是很精通(像我一样),这可能是最简单的解决方案。太糟糕了,我看不到使用 anaconda 发行版的任何方法。

于 2017-07-31T04:41:19.347 回答
8

打开 Python 安装程序(.exe) -- 修改 -- 下一步 -- 启用复选框Debug Symbols and Libs

于 2020-02-24T00:01:41.433 回答
0

如果您使用 Swig 生成 python 包装器,那么您可以定义宏 SWIG_PYTHON_INTERPRETER_NO_DEBUG。在这种情况下,它不会寻找 python**_d.lib

于 2021-09-28T19:12:50.967 回答