做个记录
1.准备工作
1.1 打开 Qt 5.9.2 64-bit for DeskTop(MSVC 2015)
1.2 使用“cd 路径” 命令进入到一个新文件夹,该新文件夹内部存放Release 版本的**.exe 文件。本例中将生成的可执行文件testPackage.exe 复制到了
D:\Users\angzh \Desktop\O3dPackage文件下
2.Qt打包
Qt 命令行执行 windeployqt 工具,输入: “windeployqt ***.exe” 就完成了。
3. 拷贝exe需要的动态库
注意:第三方库调用第三方库也要复制过来
比如 :使用到了osg,那么osg需要的第三方库也要拷过来,否则还是运行不起来。
osg的osgPlugins这个文件也要复制到exe所在文件夹。
方法一:
打开 vs2015 x64 本机命令提示符
进入到 刚才存放**.exe的新文件的位置,输入命令:
D:\Users\angzh\Desktop\O3dPackage>dumpbin /IMPORTS ****.exe > output1.txt
O3dPackage在文件内生成output.txt, 打开output.txt,就会看到可执行文件调用的所有动态库:
找到各个**.dll 复制到O3dPackage 文件下即可。可以使用Everything工具查找。
方法二:
如果动态库有很多那么复制起来很麻烦,可以使用window的批处理:
通过观察程序运行时Vs输出窗口中加载的dll库:
这样加载的dll库就一目了然了,也有路径。写一个.bat文件
这样复制就完成了。
方法三:
使用Dependency Wallker 打开***.exe 查找不存在的.dll,其中黄色的问号标识是不存在的。Dependency Wallker可以递归显示可执行文件(exe)和动态库(dll)调用的动态库。
打开**.exe文件之后各个节点可能是展开的很乱,可以右击任意节点选择“折叠所有(L)”,然后再单击根节点的加号展开就是如图所示的样式,这样很清晰。
如果还想看到QGIS_CORE.DLL调用的动态库,右击选择“在外部查看器中查看”
就会弹出一个关于QGIS_CORE.DLL调用的动态库的新窗口,其中黄色问号是没有链接上,把黄色缺失库的找到拷在**.exe 所在路径下即可。
参考:https://blog.youkuaiyun.com/su_unknown_world/article/details/82317637
只是在其基础上补充了一点