0
点赞
收藏
分享

微信扫一扫

Windows环境 CMake 配置C++调用Python

# 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;
}

举报

相关推荐

0 条评论