这不是“偶然工作”的东西,UPX 旨在压缩 Win32-PE(和许多其他格式),无论是可执行文件还是 DLL。
至于“可以吗?” ,嗯,是的,当然是“OK”,只要你不违反另一方的许可。与 Qt 相关的任何事情都不太可能发生这种情况,但原则上是有可能的。例如,可以使用一些具有许可条款的 DLL,例如“以二进制形式分发,等等等等,不允许修改”。比如说,像 MSVC 或 DirectX 可再发行组件,或某些显卡供应商的专有 API。无论如何,牢记这一点并在冒着违反许可证的风险之前检查许可证并不是一个错误。
措辞你的问题“可以吗?” 略有不同:“聪明吗?” ,答案是:可能不会。磁盘上额外的几兆字节通常无关紧要。当您将所有内容打包到安装程序中,并且用户通过 Internet 下载它时,无论如何数据都会被压缩,因此在这方面是相同的。
但是,无论您使用 UPX 还是其他可执行打包程序,还是 Windows 的文件系统压缩,压缩都有副作用。它会导致额外的地址空间碎片,它禁用异步传输,并且它丧失了操作系统从工作集中丢弃来自 DLL 的页面并在访问时从 PE 映像透明地重新加载它们的能力。
最后一句意味着操作系统必须在页面文件中进行分配,并且当您的进程的工作集被移出以为其他内容腾出空间时,它必须将页面写入页面文件。没有其他办法。现在,如果用户禁用了页面文件怎么办......