PRB: C2471 or LNK1140 Error with PDB File Limits

ID: Q238875


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0


SYMPTOMS

The following errors are normally related to running into the module and size limits when a program database (PDB) file is created (a PDB file contains information used by the debugger; the file has a .pdb extension):

Compiler Error:

C2471: cannot update program database
Linker Error:
LNK1140 "too many modules for program database; relink with /PDB:NONE"


CAUSE

There is a limit of 4096 modules (.obj files) in a PDB file. The file also has a total size limit of approximately 64 MB.


RESOLUTION

There are several ways to reduce the size of PDB files:

  • Build some of the source files with the /Zd switch (line numbers only).


  • Build some of the source files as separate dynamic-link libraries (DLLs) instead of static libraries.


  • Build some of the source files without debug information.


  • Try the compiler switch /Fd"myproject.pdb" (including the quotation marks).



MORE INFORMATION

Note that the linker option /PDBTYPE:SEPT may have little affect in reducing the project's PDB file size. In Visual C++ 5.0, if you choose to use the /Fd switch, avoid using the linker option /PDBTYPE:SEPT if the PDB file name you choose is the same under compiler and linker options.


REFERENCES

For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

Q121366 INFO: PDB and DBG Files - What They Are and How They Work

Additional query words:

Keywords : kbCompiler kbDebug kbLinker kbVC kbVC500 kbVC600
Version : winnt:5.0,6.0
Platform : winnt
Issue type : kbprb


Last Reviewed: October 13, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.