qt生成的.exe文件与所需的dll文件打包后,运行内存变得很大?

lx1234 发布于 2014/09/08 12:52
阅读 1K+
收藏 0
Qt
使用qt 5.3 release生成的 *.exe文件与所需的dll文件使用Enigma Virtual Box_7.10工具打包后,运行内存(RAM)变得的很大了,在没有打包之前,把所需要的dll文件及目录与 .exe放在一起,更改了qt安装目录,执行.exe时,运行占内存只有7M左右,使用Process Explorer查看让所需qt dll,其路径都是与.exe相同,使用Enigma Virtual Box_7.10工具打包后,运行占的内存变为50M,查看 qt dll 其路径都是与.exe相同,也就是打包的dll。求解!为什么同一个.exe,同样的dll,打包前后,运行内存相关这么大?
加载中
0
一号男嘉宾
一号男嘉宾
直接放在同目录下就可以了,没必要搞个几十兆的exe
一号男嘉宾
一号男嘉宾
回复 @lx1234 : 你自己都说了,单独运行就没问题,打包以后才出现的这个问题,那是不是可以怀疑你内存占用多是打包导致的?你为什么要打包?不就是想把qt的库和exe合并成一个exe么,qt几个常用库加起来,最少也是10-20兆吧。我说的叫你不要搞个几十兆的exe,那样太吓人。
l
lx1234
自己用还可以,如果是发给别人,特别是客户的话,这样搞就不方便了,还有我说的是运行时占的内存,不是exe文件的大小
0
狗头666
狗头666
那就是打包工具的问题了,可能本身有所消耗
0
mickelfeng
mickelfeng
为什么,打包方便别人安装,qt库比较大,直接放执行目录下面
0
純白陰影
純白陰影
做成安装包给客户
0
Force武装卫队
Force武装卫队
做个安装包吧,做成单文件一股脑的都加载到内存中一般会变大。有些dll共享的,内存中有就不会重新从磁盘中加载,例如一些系统的dll。
Force武装卫队
Force武装卫队
回复 @ZeroOne : 对,还有C runtime,一些其他的runtime
甘薯
甘薯
回复 @Force武装卫队 : 我明白的,操作系统的dll库肯定不会被链接进去的...我说的是,把QT需要的自己的一大堆dll链接进去了... 这也是静态链接...
Force武装卫队
Force武装卫队
回复 @ZeroOne : 静态链接的话和这个单文件还是有区别的,静态链接系统相关的dll,如msvcrt.dll 等一般都不会整到exe里面去。
甘薯
甘薯
这个回答靠谱。 应该是二进制映像变了,从动态链接变成了静态,所以一开始就需要load进入内存,这个毫不奇怪。也应该是难以避免无法解决的。
0
beyondforever68
beyondforever68
有必要做成一个exe去运行吗,打成zip,设置个快捷方式不就可以了
0
平安北京
建议精简dll,做成安装包,这样就可以了。icudt、icuin、icuuc,如果用到这三个一定要用精简的,不然安装程序也很大
返回顶部
顶部