【问题标题】:LINK : fatal error LNK1104: cannot open file 'python37_d.lib'链接:致命错误 LNK1104:无法打开文件“python37_d.lib”
【发布时间】:2020-05-25 04:13:01
【问题描述】:

我试图将 Python 解释器集成到 Visual Studio 2013 的 C++ 应用程序中,尽管添加了 INCLUDES 和 ENV 变量(例如 LIB 和 LIBPATH),但编译会引发错误

LINK:致命错误 LNK1104:无法打开文件“python37_d.lib”。

我尝试了所有可能的谷歌建议,但我仍然无法摆脱这个错误。对此的任何帮助将不胜感激。

【问题讨论】:

  • 您对库路径和包含路径以及要链接的库的设置是什么?
  • 您好,设置如下: 包含路径:(属性->配置属性->VC++目录->包含目录)C:\Users\Shridhar\AppData\Local\Programs\Python\Python37\ include -----> 这是 Python37 所在的位置 库路径:(Proporties->Configuration Properties->VC++ Directories->Libraries Directory) C:\Users\Shridhar\AppData\Local\Programs\Python\Python37\libs -- ---> 库文件夹
  • 酷,“附加依赖项”是什么意思?
  • 这是一个显而易见的问题,你有一个名为 C:\Users\Shridhar\AppData\Local\Programs\Python\Python37\libs\python37_d.lib 的文件吗?因为你的链接器告诉你你没有。
  • @john 在我的机器上与 python 36 相同的文件夹中,我只有 python36.lib 和 python3.lib

标签: python c++


【解决方案1】:

这个库是用来调试的,如果 Python 是用默​​认选项安装的,你根本就没有它。要获得它,您需要(重新)安装 Python,并在安装程序中启用“下载调试二进制文件”选项。那么python37_d.lib 将与python3_d.lib 一起位于%PythonPath%\Libs

【讨论】:

  • 我想知道,考虑到我没有明确要求,Visual Studio 是如何决定需要这个库进行编译的。
  • 与许多其他库一样:使用预处理器。在include\pyconfig.h 中搜索pragma comment(lib,"python37_d.lib") 行(Python3.7 中的#274)。对于 MSVC,请咨询documentation
  • 我明白了。所以库只能通过命令行选项指定,也可以在头文件中请求。
【解决方案2】:

按照 Suthiro 的回答,您还可以通过运行显式指定多配置生成器(Ninja Multi-Config、Visual Studio)的 DebugRelease 配置

# Configure the build
cmake -S . -B build

# Actually build the binaries
cmake --build build --config Release

在您的源目录中。 对于单个配置生成器和更多详细信息,请参阅此答案 https://stackoverflow.com/a/64719718/15452880

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 2011-06-23
    • 2017-11-29
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多