找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

基于QT的C++&Python混合编程

admin 2020-1-15 17:53 95人围观 Qt相关

1. 使用环境


Qt Creator v2.4.1

Qt v4.7.4

Python 3.6

2. 环境配置

2.1 安装Python(略)

2.2 安装QT 和 Qt Creator(略)

2.3 在Qt Creator中创建一个新项目










2.4 编辑对应项目的*.pro文件, 添加包含目录和库目录:


在配置文件中,添加以下两行内容:
    INCLUDEPATH += -I C:\Python\Python36-32\includeLIBS += -L C:\Python\Python36-32\libs -lpython36# INCLUDEPATH和LIBS 分别是设置的自己安装的python目录下include和libs的路径


    在编译的时候,由于这个pro文件的问题,报错如下:



    2.5 解决报错问题


    •编译时报错:slots重定义
      修改object.h如下:443行: 添加 #undef slots451行: 添加 #define slots Q_SLOTS



      •解决释放PyObject*类型出错



        修改object.h
        56行: 注释掉 #define Py_TRACE_REFS


          修改pyconfig.h
          331行: 注释掉# define Py_DEBUG


          3. 验证环境是否配置成功

            #include <QtCore/QCoreApplication>#include <Python.h>#include <iostream>using namespace std;
            int main(int argc, char *argv[]){ QCoreApplication a(argc, argv);
            Py_Initialize(); if ( !Py_IsInitialized() ) { return -1; }

            PyObject* pModule =NULL; PyObject* pFunc = NULL; pModule = PyImport_ImportModule("hellocplus");
            if(pModule) { pFunc = PyObject_GetAttrString(pModule, "Hello"); PyEval_CallObject(pFunc, NULL); }
            Py_Finalize(); return a.exec();}

            项目正常编译完成后,将要调用的py文件放在和.exe同一目录下:



            python文件内容如下:
              def Hello(): print('Hello C Plus Plus and Python!!')
              再运行项目,效果如下:



              至此,基于QT的环境使用C++调用python进行混合编程就到此结束!!!


              ----------------------------------------------------------------------------------------------------------------------
              我们尊重原创,也注重分享,文章来源于微信公众号:那个男孩的杂货铺,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
              ----------------------------------------------------------------------------------------------------------------------

              鲜花

              握手

              雷人

              路过

              鸡蛋

              yafeilinux和他的朋友们微信公众号二维码

              微信公众号

              专注于Qt嵌入式Linux开发等。扫一扫立即关注。

              Qt开源社区官方QQ群二维码

              QQ交流群

              欢迎加入QQ群大家庭,一起讨论学习!

              我有话说......