Win32有多大的自定义资源可以?

时间:2012-07-25 18:49:08

标签: c++ visual-studio-2010 winapi

尝试创建类似于SFX(自解压安装程序)的东西,我使用visual c ++中的自定义资源将安装文件包含在一个exe中。当设置文件的大小超过~900 MB时,链接器无法生成嵌入了资源的exe。奇怪的是,链接器确实生成了一个没有任何警告的exe。生成的exe是一个静态链接的MFC应用程序(exectuable的主要应用程序)。但是,不包括资源。我从控制台链接期间观察了exe大小。它在一段时间内显示900 MB,最后降至2MB exe。如果我删除了一些文件(比如说总大小将是500MB),那么在嵌入所有资源的情况下生成的exe都可以。自定义资源是否存在实际大小限制?请注意,可执行文件的最终大小约为1GB,这比2GB win32应用程序可以解决的要少。所以我想知道这是一个vc ++ 2010错误或功能吗?顺便说一句,我也使用/ expectedoutputsize技巧。但它没有用,除了链接速度更快,预期输出尺寸更大。

3 个答案:

答案 0 :(得分:1)

迟来的回答。可能对别人有帮助。可能不是您问题的答案,但这可能是您问题的解决方案。检查'Bitrock安装程序'。这也提供了Self Extract安装程序。我在许多项目中成功使用它进行部署。

答案 1 :(得分:0)

根据PECOFF Specification,资源数据条目的大小为4个字节(IMAGE_RESOURCE_DATA_ENTRY.Size - 请参阅winnt.h)

  

Data RVA字段指向的资源数据的大小(以字节为单位)。

答案 2 :(得分:0)

我已经回答了类似的答案here

基本上将二进制+幻数(唯一分隔符)附加到可执行文件的末尾。在运行时打开可执行文件进行读取,通过幻数或其他方法查找偏移量,文件的其余部分是您的大数据。