Windows下Qt 编译release版本后遇见的各种问题

之前用Qt在linux下写了一个程序,现在要移植到Windows上来,结果遇见了很多头疼的问题。折腾这些问题真是耗时、耗神、耗力,所幸最终全部解决了!其实问题的解决方法根本没那么复杂。第一次编译缺乏经验,总是要交点学费的…… 首先,用Qt软件编译出的release通常是不能直接运行的,需要将相关的dll文件复制到当前release文件夹下面。实际上以下所有我遇到的问题都是因为dll文件不全:

  • 0xc000007b
  • 0xc0000135
  • QWidget Must construct a QApplication before QWidget……
  • This application has requested the runtime to terminate it in an unusual way……

我在百度上按照上面提示的错误去找解决方案,有说需要安装.NetFramework 的,有说DirectX 需要修复的,其实都不对,解决方法很简单,只需要将需要的dll文件复制到当前目录即可,这些库文件都可以到Qt安装目录下的 mingw491_32 文件夹中找。 其中plugins文件夹下的以下子文件夹需要原封不动地复制到你的exe文件所在的目录下。

  • platforms
  • imageformats

如果你的程序用到了其他的plutgin,同样需要将相关文件夹复制进来。其他所需的dll文件,比如Qt5Core.dll,需要到mingw491_32的bin子文件夹下面寻找。 下面这篇文章里的截图基本给出了所需的常见dll文件:Qt在release后的版本无法在其他电脑上运行 。但是这位作者还是遇到了0xc000007b的问题,其原因不是DirectX,而是他把plugins文件夹整个复制过来了。根据我的实测,必须将plugins下的子文件夹单独复制到当前目录才有效,复制整个plugins文件夹是不行的。 另外, process explorer 这款软件非常实用,利用它可以查看到你当前运行程序依赖的所有dll库文件以及它所在的路径,这样当你把程序复制到别人的电脑上时就可以根据这个软件的提示复制相关dll文件,如果dll文件复制不全,在别人电脑上依然无法运行。 Process Explorer 用法提示:

1

2

View -> Show Lower Pane

View -> Lower Pane View -> DLLs


如果你对本文有任何疑问或建议,欢迎联系我。本博客所有文章除特别声明外,均为原创文章,未经授权请勿转载!

ubuntu 下安装 GATE7.2 上一篇
C++ 函数参数和默认函数参数 下一篇

 目录