C++ 具有大二进制资源的LNK1106

C++ 具有大二进制资源的LNK1106,c++,windows,visual-studio,visual-studio-2005,linker,C++,Windows,Visual Studio,Visual Studio 2005,Linker,我有一个相当大的.dat文件(896MB)作为BIN资源包含在我的项目中。现在我得到一个LNK1106链接错误(“致命错误LNK1106:无效文件或磁盘已满:无法查找到0x382A3920”。) 我在WindowsXP下使用VisualStudio2005,并在4GB RAM机器上进行了尝试,该机器具有高虚拟内存设置和大量磁盘空间。 我尝试了许多不同的优化标志,但都没有用 有人有线索吗 编辑:我已经将其缩小到编译资源的特定大小。如果.res文件为544078588字节(约518.9MB)或更大,

我有一个相当大的.dat文件(896MB)作为BIN资源包含在我的项目中。现在我得到一个LNK1106链接错误(“致命错误LNK1106:无效文件或磁盘已满:无法查找到0x382A3920”。) 我在WindowsXP下使用VisualStudio2005,并在4GB RAM机器上进行了尝试,该机器具有高虚拟内存设置和大量磁盘空间。 我尝试了许多不同的优化标志,但都没有用

有人有线索吗


编辑:我已经将其缩小到编译资源的特定大小。如果.res文件为544078588字节(约518.9MB)或更大,则会发生错误。如果它小一些,就可以正常工作。仍然没有解决方案,但是…

dat文件是生成的还是最近更改的?您的程序可能试图链接到不正确的版本。

我通过将/OPT:IFC更改为/OPT:NOIFC解决了这个问题。我无法告诉你为什么它会起作用。您的结果可能会有所不同。

在“附加链接器选项”下,添加
/expectedoutputsize:600000000
,链接将像一个魔咒一样工作。不过,使用该开关不能走得太远,否则最终会出现以下情况:

致命:链接错误LNK1102:内存不足


很明显,它使用了正确的文件。当我将其替换为较小的文件时,链接成功。现在尝试较小的文件,看看我是否能找到一个神奇的大小…谢谢你的输入!这对我来说似乎没有什么区别,不过…;——\这是我的链接命令行:/VERBOSE:LIB/OUT:“NoDebug/MyProgram.exe”/INCREMENTAL:NO/NOLOGO/LIBPATH:“MyLib\u release\win\LIB”/MANIFEST/MANIFESTFILE:“NoDebug\MyProgram.exe.intermediate.MANIFEST”/SUBSYSTEM:WINDOWS/OPT:REF/OPT:NOICF/LTCG/MACHINE:X86/ERRORREPORT:PROMPT MyLib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib uuid.lib odbc32.lib odbccp32.lib二进制偏移量为898 MB。因此,链接器显然正在查找文件末尾以外的~2MB。不知道为什么,但是这个消息很有意义。我可以在这个世界上的什么地方添加
/expectedoutputsize:600000000
我在项目设置中找不到这个地方?!