1. Fatal Error C1128：number of sections exceeded object file format limit : compile with /bigobj
2. Fatal error LNK1210: exceeded internal ILK size limit:
There was not enough memory available for LINK to create the incremental status (.ilk) file.
"1. The 64MB limit is there to keep the ILK file from consuming too much of
the memory necessary to perform the link in the first place. It needs to be
reserved up front and doesn't move throughout the link. It holds the
in-memory data for linking which includes other pointers. The fact is,
linking is quite expensive in terms of memory and the larger a project is,
the larger the requirements, in general. We have to balance both the ILK
size and the size remaining we have to work with.
2. I am surprised VC6.0's linker has a different limit. I am certain it has
the same or lower, but that is beside the point now. It may have slipped out
without one and we fixed it. I do know that the intent of 7.0 was to use a
96MB limit, but due to a bug, that limit was not reached.
3. The limit is 256MB on machines running with the /3GB switch. Windows XP
allows /3GB on all SKUs now so that is one option. For the next release we
are raising the limit to 128MB on vanilla NT. It is about at that point that
we start infringing on the memory requirements of the image itself along
with all of the file I/O we have to do to perform the link.
ILK size is roughly equivalent to the image size, so they are a very large
image for x86. The largest image we have been able to link on an x86 machine
is roughly 350MB (an ia64 image). The memory requirements for doing this are
above 1GB of VM. In fact, anything over about 60MB of image size really
benefits from the /3GB switch or running on Win64."