【问题标题】:linking problem when including python in C++ file on Visual Studio 2017在 Visual Studio 2017 上的 C++ 文件中包含 python 时出现链接问题
【发布时间】:2020-12-18 15:20:31
【问题描述】:

我正在使用 C++ 中 Visual Studio 2017 上的 MFC 应用程序为 USB 设备构建用户界面。我在 python 中编写了一个简短的脚本来从文件中读取一些数据,我想在我的程序中使用这些数据。

我已经下载了 Visual Studio 指南 here 中指定的所有必要的 Python 包

我在Project -> Properties -> C\C++ -> All Options -> Additional Include Directories 中添加了Microsoft Visul Studio\Shared\Python36_64\include 的路径。

我还在Linker -> Input -> Additional Dependencies中指定了这个路径。

另外,我已经让sue所有.pdb文件都在调试符号中指定了。

问题是,当我尝试构建解决方案时,出现以下错误:

LNK1104 cannot open 'C:\Program Files (x86)\Microsoft Visul Studio\Shared\Python36_64\include.obj

当我检查时,文件 include.obj 没有生成(它不存在),但我不知道我需要做什么才能创建它。

我相信问题出在我的项目\链接器属性上,但我不确定到底是什么。我是这么认为的,因为当我创建新的 python 项目时,运行 python 代码没有问题,当我删除 #include <Python.h> 时,我的应用程序运行良好。也许有人知道我该如何解决?

谢谢。

编辑:

我已经尝试了 Barrnet Chou 在 cmets 中的建议。我按照手册中的说明做了所有事情,但一直遇到同样的问题。也许我没有包含正确的路径?

我添加了以下内容:

VC++ Directories 中,我在Include DirectoriesLibrary Directories 中添加了以下内容:

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\libs C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include

C\C++ -> General我已经添加

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include

Linker -> GeneralLinker -> Input

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\include C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\libs

【问题讨论】:

    标签: python c++ visual-studio


    【解决方案1】:

    我建议你可以检查一下 Linker -> General -> Additional Library Directories 中是否添加了库。

    如果你这样做了,我建议你可以参考 Microsoft Docs 关于lnk1104

    无法打开文件'C:\Program.obj'

    如果您在错误消息中看到文件名 C:\Program.obj,请将您的库路径用双引号括起来。当以 C:\Program Files 开头的解包路径传递给链接器时,会发生此错误。展开的路径也可能导致类似的错误。通常,它们会在驱动器的根目录中显示一个意外的 .obj 文件。

    要为命令行构建解决此问题,请检查 /LIBPATH 选项参数。还要检查 LIB 环境变量中指定的路径,以及命令行中指定的路径。确保在任何包含空格的路径周围使用双引号。

    要在 IDE 中解决此问题,请根据需要为项目的以下属性添加双引号:

    • 配置属性上的库目录属性-> VC++ 目录属性页,
    • 配置中的附加库目录属性 属性-> 链接器-> 通用属性页,
    • Configuration Properties->Linker-> Input 属性页中的 Additional Dependencies 属性。

    【讨论】:

    • @BarnetChou 感谢您的回复。我已经编辑了这个问题。不幸的是它仍然不起作用,也许我没有包含正确的路径?
    • 你说过when I delete the #include <Python.h> my app works perfectly。你能告诉我Python.h 是什么,app 是 MFC 应用程序还是 python 项目?
    • Python.h 是您需要包含在 C++ 文件中以便从那里调用 python 脚本的库,如下所述:docs.python.org/3/extending/extending.html 我的应用程序是一个基于 MFC 对话框的应用程序,我正在编写它在 C++ 中。我想从 python 文件中添加一个简短的脚本,但我遇到了麻烦......你知道可能是什么问题吗?我有 VS 2017 的所有必要扩展。谢谢
    • 我阅读了一些关于mfc import python.h 的文档。我建议您可以尝试在Properties->Linker->Input->Additional Dependencies 中设置python36.lib(Release)python36_d.lib(Debug)。此外,您可以确认平台设置是一致的(Properties 中的 x64 和Solution Platforms 中的 x64)。
    猜你喜欢
    • 2019-09-14
    • 2019-07-25
    • 2019-06-15
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多