Qt5使用C++调python问题总结

本文总结了在Qt5.10.1环境下,使用C++调用Python3.6.5时遇到的问题及解决方法,包括.pro文件配置、slot关键字冲突、编译器与Python位数匹配、0xc000007b错误、DLL位数不一致、线程错误以及参数传递问题。确保Qt、Python和编译器位数一致,使用Dependency Walker检测DLL问题,新开线程调用Python,并在命令行中测试py文件以定位编码等潜在错误。
摘要由CSDN通过智能技术生成

    最近在用Qt写桌面应用程序时,有一个模块需要用C++调之前写好的python代码,总结一下自己这段血泪史,也让后来人少走点弯路。

    Qt版本5.10.1 

    编译器mingw530 32位(注意5.10官方发布的编译器只有32位版,好坑)

    python版本3.6.5 32位

下面说明需要注意的几点:

1.需要在.pro文件中加入这两行代码,将.h头文件及lib库包含进去,在调用python程序的cpp文件中也要将头文件包含进去




2.object.h中出现有关slot的错误,是因为slot是Qt中的关键字引发的冲突

 #undef slots

PyType_Slot *slots;  /* terminated by slot==0. */

#define slots Q_SLOTS

前后加上这两句话就OK


3.出现类似undefined reference to '_imp_Py_XXX'之类的问题

首先保证编译器与python解释器位数一致,因为如果用的是Qt自带的mingw编译器,5.10版本官方仅提供32位,而很多人使用的python都是64位版,因此会报这类的错误,解决办法是去python官网下载32位版,之后将.pro中导入python.h与lib库的路径修改为32位版的路径,并修改有关python的环境变量,令Path与PATHONPATH指向32位版的路径,还有第三方库也应更换为32位版,方法很简单,修改环境变量指向32位版的pip,然后pip install XXX就OK了


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值