Qt 联合Visual Studio编译打包发布

这篇博客详细介绍了如何在Visual Studio环境下结合Qt进行编译打包,包括使用windeployqt工具解决依赖库问题,批处理自动拷贝dll,利用ldd命令查找依赖库,以及Cmder工具在Windows下的使用方法。
摘要由CSDN通过智能技术生成

1、qt

查找项目中使用到的qt动态链接库;

步骤如下

①打开项目使用的windeployqt工具(qt自带的工具);

②进入到文件夹所在目录;使用 cd 命令 

③使用命令:windeployqt Name.exe(在目标文件夹所在目录下执行该命令)

但是由于我的QT使用的是MSVC编译器,会用到一些VC的库,使用qt的命令行时会提示我

warning:Cannot find Visual Studio installation directory,VCINSTALLDIR is not set.

解决方案1

win+R,输入QT安装目录下windeployqt.exe的路径,然后空格,再加上项目Release的路径。
我的是:C:\Qt\Qt5.13.1\5.13.1\msvc2015_64\bin\windeployqt.exe D:\GIICS\qtReleaseDemo\x64\Release\qtReleaseDemo.exe,供参考。

然后会有这个warning,这个在中间很难被发现,要注意!

找到msvcp140d.dll(我是VS2015,所以是140),复制它的路径添加到环境变量中。我的路径是C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist\x64\Microsoft.VC140.DebugCRT\msvcp140d.dll,添加环境变量时,到VC就可以了,后面的不要。

关闭cmd重新打开(一定要先关闭之前打开的,然后重新打开),输入第三步的路径,C:\Qt\Qt5.13.1\5.13.1\msvc2015_64\bin\windeployqt.exe D:\GIICS\qtReleaseDemo\x64\Release\qtReleaseDemo.exe,回车就行了。

看到Release文件夹下多出了QT的很多dll和vcredist_x64.exe就行了。把这个文件夹放到一个全新的计算机也能跑起来,不过得在计算机上先安装图中的vcredist.exe。    

应用windeploy添加环境变量时尽量只有一个 ,当两个时你用windeployqt +可执行名时 打包可能会出错,如你使用的时msvc2019_64建立的Qt项目

你打包时可以使用的是mingw_64打包的文件。移植到其他电脑上时就会报错。

 所以你可以留有一个环境变量的路径 记得重启

方法二

  1. 首先将配置改为Release。

  2. 接下来重新生成项目。

  3. 然后从工程目录/x64/Release/中便可找到生成的exe文件。

  4. 若想运行该exe文件,需将其需要的各个dll文件与其放在同一文件夹中。

    这里主要需要qt的一些dll文件,可在qt安装目录里msvc2017_64/bin文件夹中找到。

使用windeployqt这个命令应该都知道,

将release版本exe复制拷贝到一个单独目录;

4.2打开QT下MSVC 2017控制台,切换到刚才exe所在目录;

4.3再使用 Qt 自带的 windeployqt 工具命令,其语法格式为:

windeployqt 可执行程序名

4.4可以看到windeployqt 工具已经将程序所依赖的qt环境已经复制到当前目录。

还有就是进入VS的安装路径

C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\Common7\IDE\RemoteDebugger\x64
你是x64开发的就选x64,要不然就选x86.

去把如下运行库拷出来放到exe路径下,要不然去遇到运行库错误,就异常尴尬了!

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-w
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_735754647

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值