我正在使用Python 3.8.5(64位)和Dev-C++(代码生成ISO C++ 11,包括Python的include文件夹,而库也具有Python的Lib文件夹)。
我用Python设计了一个非常简单且准系统的ttk GUI,我需要的是.cpp调用GUI并从中发送和接收数据。
到目前为止,我已经注意到我需要#include <Python.h>并将Py_Initialize();Py_Finalize();用于某些内容。
我知道我可以从Python GUI的源文件中调用.cpp,但我的老师希望反之。
有什么办法可以做到这一点?
编辑1:
例如,如果我运行以下代码:

#include <iostream>
#include <Python.h>

using namespace std;

int main()
{
    Py_Initialize();
    cout << Py_GetVersion() << endl;
    PyRun_SimpleString("print('C++ back-end & Python front-end')");
    Py_Finalize();
    return 1;
}
然后我得到一个错误:Python-C++。cpp :(。text + 0x10):对`__imp_Py_Initialize',GetVersion,SimpleStringFlags的 undefined reference ,以及对Finalize的引用。
我可以在Visual Studio中做到吗?我在这里扯头发。
编辑2:我有嵌入式Python在Visual Studio中工作。现在,如何使用.cpp导入Interface.Py,以及如何将其用作GUI?

最佳答案

//Daniel Pantigoso e Isaac Brenes
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <errno.h>
#include <Python.h>

using namespace std;

int main()
{
    FILE* scr;
    Py_Initialize();

    scr = fopen("Interface.py", "r");
    PyRun_SimpleFile(scr, "r");

    Py_Finalize();
    return 1;
}
您必须对Visual Studio的选项进行一些修改,但这是可行的。
Visual Studio必须匹配您的Python安装(64位Python-x64 VS,32位Python-x86)。
项目属性必须具有:
  • C / C++
  • 链接器

  • 在C / C++中
    一般:
    其他包含目录:单击右侧的按钮-> ->文件夹按钮-> ...按钮->导航至Python的安装位置-> Python-> Python(您的版本)->包含->选择文件夹->添加->确定
    预处理器:
    预处理程序定义:单击右侧的按钮-> ->复制将其粘贴:_CRT_SECURE_NO_WARNINGS->确定
    在链接器中
    一般:
    其他图书馆目录(您必须两次执行此操作,因为您需要添加两个文件夹):单击右侧的按钮-> ->文件夹按钮-> ...按钮->导航至安装了Python-> Python-> Python(您的版本)-> Lib&libs(您来添加这两个,这就是为什么您必须做两次)->选择文件夹->添加->确定
    你完成了。

    10-06 14:43