作者:范婷柏 | 来源:互联网 | 2023-06-05 19:50
我们公司的程序本来是QT4开发的,但是由于要用到串口,本来用的是QEXTSERIALPORT,用了以后感觉不是很好,所以升级了Qt5,结果升级过后程序编译通过后,无法运行,debug的时候发现在程序运
我们公司的程序本来是QT4开发的,但是由于要用到串口,本来用的是QEXTSERIALPORT,用了以后感觉不是很好,所以升级了Qt5,结果升级过后程序编译通过后,无法运行,debug的时候发现在程序运行到main函数之前跳出来一个段错误,如下图。
我换了台电脑直接安装Qt5.5,结果运行的时候同样的在main函数之前跳出来错误对话框如下图。
查了很多资料搞不清楚。请教是否有人遇到过类似情况?
7 个解决方案
QT5里面删除了:QFtp、phonon、QGui(不再使用,改为QWidgets),并且QTextCodec不再使用在主函数里面。设置编码什么的一般与QString有关联,反正大变样。原来的代码如果有这些东西,那么就需要你添加执行条件了,if endif等等
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
这些你在Qt5里面要加上
上述你说的,我刚刚检查了,除了QGui我替换成QWidget外,其他的地方我都没有用。刚刚发现,崩溃的时候报错的模块是QT5core.dll,所以我怀疑应该是在Qt4中可以使用到Qt5中没有的东西。但是编译不报错就很奇怪.
如果库表面上没什么问题,我建议你查看pro文件。QT += core一定要加上,在pro文件里面逐个找找,做到完善
我用Qt5新建一个工程,观察pro文件与你的Qt4里面的区别,按Qt5生成的pro文件改Qt4的pro再试试吧
可以编译过,但运行不起来,一般都是库有问题,看看你那些库
第一个图好像是动态库没有放对位置,程序执行找不到动态库.
第二个段错还是打断点调试吧