开发者社区> 问答> 正文

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

使用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,打包前后,运行内存相关这么大?

展开
收起
kun坤 2020-06-06 13:53:47 1009 0
1 条回答
写回答
取消 提交回答
  • 直接放在同目录下就可以了,没必要搞个几十兆的exe######回复 @lx1234 : 你自己都说了,单独运行就没问题,打包以后才出现的这个问题,那是不是可以怀疑你内存占用多是打包导致的?你为什么要打包?不就是想把qt的库和exe合并成一个exe么,qt几个常用库加起来,最少也是10-20兆吧。我说的叫你不要搞个几十兆的exe,那样太吓人。######自己用还可以,如果是发给别人,特别是客户的话,这样搞就不方便了,还有我说的是运行时占的内存,不是exe文件的大小######那就是打包工具的问题了,可能本身有所消耗######为什么,打包方便别人安装,qt库比较大,直接放执行目录下面######做成安装包给客户######做个安装包吧,做成单文件一股脑的都加载到内存中一般会变大。有些dll共享的,内存中有就不会重新从磁盘中加载,例如一些系统的dll。######回复 @ZeroOne : 对,还有C runtime,一些其他的runtime######回复 @Force武装卫队 : 我明白的,操作系统的dll库肯定不会被链接进去的...我说的是,把QT需要的自己的一大堆dll链接进去了... 这也是静态链接...######回复 @ZeroOne : 静态链接的话和这个单文件还是有区别的,静态链接系统相关的dll,如msvcrt.dll 等一般都不会整到exe里面去。######这个回答靠谱。 应该是二进制映像变了,从动态链接变成了静态,所以一开始就需要load进入内存,这个毫不奇怪。也应该是难以避免无法解决的。######有必要做成一个exe去运行吗,打成zip,设置个快捷方式不就可以了######建议精简dll,做成安装包,这样就可以了。icudt、icuin、icuuc,如果用到这三个一定要用精简的,不然安装程序也很大

    2020-06-06 13:53:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载

相关镜像