Qt程序Release版出现 类似 QEventLoop: Cannot be used without QApplication 问题的终极解决方案

最近在做Qt程序开发,程序在Debug下跑是没有问题的,发布到Release版本后,出现各种问题:

报各种莫名其妙的错误,类似的错误有:

  1. QEventLoop:Cannot be used without QApplication
  2. QObject::connect:Cannot connect (null)::aboutToQuit() to
  3. QNativeWifiEngine::closeHandle()
  1. QObject::connect:Cannot connect (null)::aboutToQuit() to QNativeWifiEngine::closeHandle()
  2. QObject:Cannot create children for a parent that is in a different thread.
  3. (Parent is QApplication(0x31f99c), parent‘s thread is QThread(0x57c058), current thread is QThread(0x598b40)

等!

这些异常信息看着很让人头疼,也无从下手,我甚至一行简单的代码都会报错

  1. newQNetworkAccessManager()

会报错QObject::connect: Cannot connect (null)::aboutToQuit() to QNativeWifiEngine::closeHandle()

到处baidu、google都没有解决办法,也有少数的人遇到类似的问题,但是都没有解决办法。

一次偶然的机会,我找到了问题所在:就是库链接错了,我把Qt5Network.lib写成Qt5Networkd.lib了

改回来之后,一切就都正常了。

真是大坑啊,自己挖的坑,还是得自己填。

为了记住这个惨痛的教训,特意写下这篇文章,同时也给那些遇到同样问题的人一个解决方法。

来自为知笔记(Wiz)

时间: 2024-10-13 16:16:02

Qt程序Release版出现 类似 QEventLoop: Cannot be used without QApplication 问题的终极解决方案的相关文章

调试Release版程序

使用VS,打开dump文件(*.dmp) 将从用户处COPY回来的dmp文件放到于Release版程序PDB文件相同的目录下,并在解决方案属性中设置源代码的目录 在VS界面的右上角点“使用 仅限本机 进行调试”开始调试. Windows XP使用Drwstn创建dmp文件 Window 7需要在注册表中设置,打开dmp文件保存功能,增加“LocalDumps”

Qt程序发行Linux版,软件打包知识(patchelf 工具修改依赖库,确认 qmake -v 是自己使用的Qt版本,否则用export PATH进行修改)good

patchelf 工具可以修改已编译运行程序的依赖库位置和指定库链接器 patchelf --set-rpath patchelf --set-interpreter 通过这个工具 https://github.com/probonopd/linuxdeployqt 如果自己编译不了,也可以下载现成的 https://github.com/probonopd/linuxdeployqt/releases 运行 ./linuxdeployqt-2-x86_64.AppImage ShanbayDi

Qt 程序在 Windows 下的发布

本文讨论在 Windows 平台下编译成功的 Qt 程序,如何在未配置 Qt 开发环境的 Windows 平台下独立运行的方法. 经过验证发现,在 Ubuntu 平台下编译成功的程序可在未安装 Qt 开发环境下的 Ubuntu16.04 中运行,所以,本文仅讨论,在 Windows 平台下编译成功的 Qt 程序,在未配置 Qt 开发环境的 Windows 平台下独立运行的方法. 1. 编译模式选择 如若想要发布程序,在 IDE 中编译一定要选择 release 而不是 debug,编译成 rel

使用VC2005编译真正的静态Qt程序

首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来.当然,程序发布的时候,还要把相关的库也一并发布出去. 静态引用编译,是指把相关的库也一并引入Exe文件.这是程序的尺寸就会很大,不过,程序发布就会变得简单很多. 其次,你可能会注意到我标题上写了“真正”这两个字.为什么我要强调真正这两个字呢?因为使用VC编译的C或者C++程序,都

使用VC2005编译真正的静态Qt程序 good

首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来.当然,程序发布的时候,还要把相关的库也一并发布出去. 静态引用编译,是指把相关的库也一并引入Exe文件.这是程序的尺寸就会很大,不过,程序发布就会变得简单很多. 其次,你可能会注意到我标题上写了“真正”这两个字.为什么我要强调真正这两个字呢?因为使用VC编译的C或者C++程序,都

一些遇到的Qt程序在Windows平台间移植问题整理

今天尝试把Qt程序移植到各种虚拟机中测试,由于Qt的依赖库报告往往不能显示出全部依赖库.结果频频出现问题,好不容易全部解决了,这里给出一些套路. 首先对于Qt版本,我用过很多,最终表示现阶段推荐MingGW的版本(此版自带MingGW),官网链接: Qt 5.4.2 for Windows 32-bit (MinGW 4.9.1, 852 MB) (info) 我个人百度网盘链接:Qt 5.4.2 MinGW 安装时要注意勾选上MinGW ,如果你没有的话.此版本可以在WindowsXP下运行.

VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

https://www.cnblogs.com/rainbowzc/p/4689009.html 下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们 所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

QSS美化Qt程序以及最近做的Qt项目界面

什么是QSS QSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制.QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上. QSS在Qt程序中的使用办法 首先将QSS写在文件中,然后利用如下的代码设置QSS: MainWidget::MainWidget(QWidget *parent) : QWidget(parent), ui(new