des*_*tan 4 windows dll dynamic-linking upx
我真的缺乏在Windows上开发东西的经验,我可能错过了一些明显的东西,试着保持冷静:)
我有一个应用程序(Qt C++),它使用.dll自己路径中的一些(我的意思是我将这些.dll与.exe一起提供).当我发送应用程序时,我通过upx压缩dll .它极大地压缩了它们,我可以在不解压缩dll的情况下使用它们.
我的印象是我做错了,但它只是偶然的,所以我想确定,使用压缩的dll是否可以?或者我应该在任何时候期待不可预测的问题?(这是主要问题)
如果.dlls可以在压缩模式下使用,那么为什么地球我们首先将它们解压缩.
这不是"偶然工作"的东西,UPX旨在压缩Win32-PE(以及许多其他格式),无论是可执行文件还是DLL.
至于"可以吗?" ,是的,当然只要你没有违反另一方的执照,它就是"OK".与Qt相关的任何事情都不太可能发生,但原则上,它是可能的.一个可以是例如使用某些DLL具有许可证条款,如"以二进制形式,等等等等分布,不允许修改".比方说,像MSVC或DirectX可再发行组件,或某些图形卡供应商的专有API.在任何情况下,在冒险违反许可证之前,记住这一点并检查许可证并不是一个错误.
措辞你的问题"可以吗?" 略有不同:"这是明智的吗?" 答案是:可能不是.磁盘上额外的几兆字节通常并不重要.当您将所有内容打包到安装程序中,并且用户通过Internet下载时,数据仍会被压缩,因此在这方面也是如此.
但是,压缩,无论是使用UPX还是其他可执行打包程序,还是Windows的文件系统压缩,都会产生副作用.它会导致额外的地址空间碎片,它会禁用异步传输,并且它会丧失操作系统从工作集中丢弃DLL页面的能力,并在访问时透明地从PE映像重新加载它们.
最后一句话意味着操作系统必须在页面文件中进行分配,并且当您的进程工作集被移出以为其他内容腾出空间时,它必须将页面写入页面文件.没有其他办法.现在,如果用户已禁用页面文件,该怎么办...
| 归档时间: |
|
| 查看次数: |
4129 次 |
| 最近记录: |