全是看了大佬们的帖子,结合chatGPT才揉出来。在此做个记录。
- 安装python
- 在Qt Creator *.pro 文件中配置好环境
- 来个简单的example.py
- 调用代码
- 安装pip
- 添加opencv等库
- 调用包含了opencv库的py代码
- 成功
*.pro配置:
INCLUDEPATH += C:\Users\xuanm\AppData\Local\Programs\Python\Python312\include
LIBS += -LC:\Users\xuanm\AppData\Local\Programs\Python\Python312\libs -lpython312
example.py源码:
# example.py
def add(a, b):
return a + b
Qt Creator里面调用example.py的C++函数:
int MainWindow::testPy()
{
const wchar_t * pythonHome = L"C:/Users/xuanm/AppData/Local/Programs/Python/Python312";
Py_SetPythonHome(pythonHome);
// 初始化 Python 解释器
Py_Initialize();
// 添加目录到 Python 模块搜索路径
PyObject* sysPath = PySys_GetObject("path");
PyObject* pPath = PyUnicode_FromString("C:/temp");
PyList_Append(sysPath, pPath);
Py_DECREF(pPath); // 释放引用
// 导入 Python 脚本
PyObject* pModule = PyImport_ImportModule("example");
if (!pModule) {
PyErr_Print();
std::cerr << "Failed to load module." << std::endl;
return 1;
}
// 获取函数对象
PyObject* pFunc = PyObject_GetAttrString(pModule, "add");
if (!pFunc || !PyCallable_Check(pFunc)) {
PyErr_Print();
std::cerr << "Failed to get function." << std::endl;
return 1;
}
// 准备参数
PyObject* pArgs = PyTuple_Pack(2, PyLong_FromLong(5), PyLong_FromLong