参考VS2019 C++ 调用python函数/类对象的方法_蜗牛在听雨的博客-CSDN博客
1、在项目中添加头文件和库文件
在链接器-》输入》附加依赖项中加库文件python38.lib
编译会出现错误
当双击错误语法时,会定位到PyType_Slot *slots;这是因为qt关键字和python中的slots冲突,可以把当前slots改成slots1.编译通过。
2、编写程序
在构造函数中添加
Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
if (!Py_IsInitialized()) //如果没有初始化成功
{
qDebug() << "fail to initial!\n";
Py_Finalize();
}
在析构函数中添加
Py_Finalize();
在按钮点击槽函数中加
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('D:/pytorch')");//设置.py文件所在位置
PyRun_SimpleString("print('hello world!')");
//声明变量
PyObject* pModule = NULL; //.py文件
PyObject* pFunc = NULL; //py文件中的函数
PyObject* pParams = NULL; //函数参数
PyObject* pResult = NULL; //函数返回的结果
pModule = PyImport_ImportModule("pyth"); //调用上述路径下的testPython.py文件
if (pModule == NULL)
{
qDebug() << "don't find the python file!" << endl;
}
pFunc = PyObject_GetAttrString(pModule, "add_number"); //从指定.py文件中调用函数add_number
pParams = Py_BuildValue("(ii)", 1, 1);//设置函数参数,i表示int整型,两个i表示有两个参数,s表示字符串等
pResult = PyObject_CallObject(pFunc, pParams);//调用函数,返回计算结果
int res;
PyArg_Parse(pResult, "i", &res);//将返回结果转换成C++类型
qDebug() << "res:" << res << endl;
在D盘pytorch目录中加pyth.py问价,里面添加
def add_number(a, b): return a+b
运行结果