2009-11-16 46 views
4

我有一个相当巨大的.dat文件(896MB)作为我的项目中的BIN资源。现在我得到一个LNK1106链接错误(“致命错误LNK1106:无效文件或磁盘已满:无法查找到0x382A3920”。) 我在Windows XP下使用Visual Studio 2005,并试图在具有较高虚拟内存设置的4GB RAM计算机上尝试大量的磁盘空间。 我试过了一些不同的优化标志,但无济于事。LNK1106与大的二进制资源

有没有人有线索?

编辑:我已经缩小到编译资源的特定大小。如果.res文件为544078588字节(约518.9MB)或更大,则会发生错误。如果它更小,它工作得很好。仍然没有解决方案,但...

+0

二进制偏移量是898 MB。因此,链接器显然是在超过文件末尾寻找〜2MB。不知道为什么,但消息是有道理的。 – MSalters 2009-11-16 14:46:08

回答

0

dat文件生成或最近有变化?您的程序可能试图链接到不正确的版本。

+0

那么,它清楚地表明它使用了正确的文件。当我用一个更小的文件替换它时,链接成功。现在尝试更小的文件,看看我是否能找到一个神奇的尺寸... – 2009-11-16 15:41:29

1

我通过更改/ OPT:IFC到/ OPT:NOIFC修复了这个问题。不能告诉你它为什么起作用。你的结果可能有所不同

+0

感谢您的输入!这对我来说似乎没有什么区别,但是...; - \ 这是我的链接命令行:/ VERBOSE:LIB /OUT:"NoDebug/MyProgram.exe“/ INCREMENTAL:NO/NOLOGO/LIBPATH:” MyLib_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 oleaut32.lib uuid.lib odbc32.lib odbccp32.lib – 2009-11-23 08:28:57

3

在“其他链接器选项”下,添加/expectedoutputsize:600000000,该链接将像魅力一样工作。你不能与开关走得太远虽然,否则你会结了:

FATAL:链接错误LNK1102:内存不足

+0

在这个世界上我可以添加'/ expectedoutputsize:600000000'我可以'在项目设置中找到这个地方?! – 2013-09-09 16:42:37