如何在Windows下发布QT应用程序

如何在Windows下发布QT应用程序,第1张

你好,

使用Release

模式编译后,release

的目录下包含

Hello1.exe

可执行程序。如果我们需要发布这个程序,那么还需要

QT

的运行库,包括哪些呢?拿一台干净的机器一个个试,终于把这些

Qt

库给找出来,成功运行

QtCore4.dll

QtGui4.dll

mingwm10.dll

libgcc_s_dw2-1.dll

其中要特别注意的是,这些文件应该从

Qt

安装目录下的

[QT安装目录]\qt\bin

子目录中获取,因为[QT安装目录]\bin

也有同样的文件,但是无效。这里仅限

Windows

系统,其他非

Windows

系统尚未研究。不过也碰到一个小问题

Hello1

程序中有这么一行代码:QStringgbk_msg=codec->toUnicode("你确认要退出HelloQt程序吗?

希望回答对您有帮助.

Windows下开发程序难免会用到动态链接库,然而库依赖在发布时非常容易导致应用程序无法正常启动,常见情况有以下几种:

VS自带有一个dumpbin工具,在要发布应用程序之前,可以使用dumpbin /dependents xx.exe来查看库依赖情况:

由此我们可以把依赖的动态库均打包一份防止缺少dll的问题发生,但是要尤其注意dll的版本问题,否则会导致问题二的发生。

上面说到该问题发生的原因在于应用程序依赖的当前环境下dll版本不对,根本上的解决方案就是在打包时就做好版本一致的检查。

这个是后来遇到的情况,其实原因与问题二相同,只是库之间的依赖传递不太容易发现,出现这个提示说明当前环境下的ucrtbase.dll是不兼容的,也就是版本不对,需要把开发环境下的ucrtbase.dll打包进去或者安装VS运行环境。

嗯还是用后者来的方便,一步到位,再加上Qt自带打包工具,Visual Studio和Qt的库依赖问题就基本解决了。

还有一点值得一提,因为有些系统级的动态库在不同版本OS下虽然名字相同但实现和依赖差别很大,如ws2_32.dll,因此在部署环境下不要随便使用开发环境的版本。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8121675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存