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