未找到在 C++ 'python33_d.lib' 中使用 Python 3.3

Posted

技术标签:

【中文标题】未找到在 C++ \'python33_d.lib\' 中使用 Python 3.3【英文标题】:Using Python 3.3 in C++ 'python33_d.lib' not found未找到在 C++ 'python33_d.lib' 中使用 Python 3.3 【发布时间】:2013-06-10 16:26:27 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

来自python bug tracker的简单解决方案:

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

【讨论】:

【参考方案2】:

如果您需要调试版本(就像我工作一样),可以自己构建库:

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

【讨论】:

我从这条路径开始,然后在运行命令 build.bat -d 后出现错误,提示我需要安装特定版本的 Visual Studio (v2015),但我不想这样做。所以,我选择了@aquirdturtle 解决方案,它允许我通过添加调试库来修改我当前的安装。现在,我不再收到 OP 所述的错误。【参考方案3】:

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

【讨论】:

现在运行时找不到python33.dll。我将它添加到我的项目中,是否需要将 python33.dll 的路径添加到我的属性中? 将该 DLL 放在加载程序希望找到的位置,例如当前目录。 好的,所以我将 Python33.dll 复制粘贴到当前目录中,现在我收到访问冲突错误 Unhandled exception at 0x000000001E17D5CD (python33.dll) in PythTest.exe: 0xC0000005: Access violation reading location 0x0000000000000008. 这不是正确的解决方案...这只是为了避免当前的构建错误。【参考方案4】:

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

【讨论】:

请注意,这个选项不在您选择自定义后看到的第一个屏幕上(这让我有点失望)。您必须单击“下一步”按钮,然后您将看到该选项。【参考方案5】:

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

【讨论】:

这应该是公认的答案,重新安装 Python 需要 1 分钟,包括所有调试符号。 是的。这应该被接受为答案。它无需任何调整即可工作。【参考方案6】:

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

【讨论】:

以上是关于未找到在 C++ 'python33_d.lib' 中使用 Python 3.3的主要内容,如果未能解决你的问题,请参考以下文章

缺少Python27_d.lib的解决方法

LNK1104 无法打开文件'python39_d.lib'

无法打开文件“C:Python27libs.obj”,无法打开文件“python27_d.lib”

无法打开文件“C:Python27libs.obj”,无法打开文件“python27_d.lib”

无法打开文件“C:Python27libs.obj”,无法打开文件“python27_d.lib”

VS2017用c++调用python脚本文件