Visual Studio 嵌入大型资源文件近 4GB

问题描述

我正在尝试嵌入一个大型资源文件(几乎 4GB),它是一个 .dat 文件。但是我遇到了引发错误的问题

"Error reading resource 'Sx64.x-none.dat' -- 'Specified argument was out of the range of valid values.

Visual Studio 的嵌入资源的大小似乎有限制。有没有办法增加最大尺寸?或其他一些解决方法?我试图不使用链接的资源或使用 exe 复制另一个文件

解决方法

虽然在 PE 格式规范中,SizeOfImage 值是一个 32 位无符号整数,理论上最多可以处理 4 GiB,但实际上可执行文件的限制更低。 stackoverflow 上的某个用户 here 已经测试了这种行为。然而,仍然可以使可执行文件更大并可以工作(仅在 64 位 Windows 上),但数据必须保存在文件结尾处的图像部分之外,因此加载程序不会尝试分配它。这是一个不好的做法,我建议,正如其他人在评论中所建议的那样,将它与您的可执行文件一起放在一个单独的文件中。