qt打包相关
目录
2.enigma virtual box将库和exe文件打包成一个可执行文件。
2.1 采用 Enigma Virtual Box 打包成exe
-
1. 打包命令 -windeployqt
qt自带的windeployqt。
新创建一个目录,将待发布的exe文件放入此目录,而后运行windeployqt。运行完毕后,在此目录下包括exe及其依赖的库文件。
可能提示命令没找到,修改环境变量中的PATH,增加qt的编译工具路径下的bin目录即可,实例:在PATH环境变量中增加C:\Qt\Qt5.13.2\5.13.2\mingw73_64\bin
打包后的文件夹示例:
2.enigma virtual box将库和exe文件打包成一个可执行文件。
2.1 采用 Enigma Virtual Box 打包成exe
官网地址为: https://www.enigmaprotector.com/en/downloads.html 来进行。
此方法在网上有很多资料,比较简单,不再赘述。
基本界面如下:选择qt编译生成主程序。添加依赖的库并保持相对路径不变,依赖的库由第一步中的windeployqt已经拷贝到和exe文件同一个文件夹中了。
-
2.2 无法定位程序输入点 动态链接库问题处理及原因分析
打包后运行提示:
原因分析:
在自己的磁盘搜索 此库文件名称 libwinpthread-1,例如我的电脑里面C盘搜出
D盘搜出
查看环境变量中path的配置,上述TDM-GCC和perl的路径配置都在qt前面,同时在1中用windeployqt 打包时,拷贝出来的libwinpthread-1.dll的时间和tdm-gcc是一致的,都是2015/6/28 14:28,说明打包时没有采用qt下的库,而采用了其他库,导致程序在运行时报错。
将tdm-gcc卸载掉,不用了。再重新运行windeployqt,如下
提示没有工具链了。我们查看path的设置,实际上qt安装时,没有将编译工具的路径添加到path中,手动添加,实例如下:
C:\Qt\Qt5.13.2\Tools\mingw730_64\bin
配置后,再次windeployqt ,可以看到库的时间已经qt下mingw编译工具下的库了
而后再用virtual box打包成一个单一的exe文件,就可以正常运行了。