qt+vs2017创建工程c++调用python

参考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

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值