# CMakeLists.txt
add_library( python3
STATIC
IMPORTED )
# 这里是使用python的安装路径
set_target_properties( python3
PROPERTIES IMPORTED_LOCATION
"D:/python/libs/python39.lib")
# 使用python的静态库
target_link_libraries(TestDemo python3)
# 添加python的头文件
target_include_directories(TestDemo PUBLIC "D:/python/include")
#main.py
def add(a, b):
return a + b
//main.cpp
int main(int argc, char *argv[])
{
Py_Initialize();
if (!Py_IsInitialized()) {
qDebug() << "初始化失败";
}
qDebug() << "初始化成功!";
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject* pModule = PyImport_ImportModule("main");
if (!pModule) {
qDebug() << "获取pModule模块指针失败";
return 0;
}
PyObject* pFunc = PyObject_GetAttrString(pModule, "add");
if (!pFunc) {
qDebug() << "获取函数指针失败";
return 0;
}
PyObject* pPara = PyTuple_New(2);
PyTuple_SetItem(pPara, 0, Py_BuildValue("i", 100));
PyTuple_SetItem(pPara, 1, Py_BuildValue("i", 200));
PyObject *FuncBack = PyObject_CallObject(pFunc, pPara);
int res = 0;
PyArg_Parse(FuncBack, "i", &res);
qDebug() <<"调用python函数的返回值 = " <<res;
Py_Finalize();
return 0;
}