INFO: _DEBUG Must Be Defined When Linking to Debug Libraries

Article translations Article translations
Article ID: 85514 - View products that this article applies to.
This article was previously published under Q85514
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all

SUMMARY

To link an application with the debugging version of the Microsoft Foundation Class (MFC) libraries, the source code must define the _DEBUG macro at compile time. Specify the name of the appropriate MFC library on the LINK command line before the name of the appropriate C/C++ Run-time Library.

MORE INFORMATION

The debugging versions of the MFC libraries provide additional debugging information in functions that the C/C++ run-time libraries normally provide (such as "new" and "delete"). An attempt to link code compiled when the_DEBUG macro is not defined with the debugging libraries may fail and LINK may generate errors similar to the following:
   C:\...\MFC\lib\safxcwd.lib(memory.cpp) : error L2025: public:
      static void __near* __near __cdecl
      CObject::operator new(unsigned int) : symbol defined
      more than once
					
   C:\...\MFC\lib\safxcwd.lib(memory.cpp) : error L2025: public:
      static void __near __cdecl
      CObject::operator delete(void __near*) : symbol defined
      more than once
					
When compiling from the command line, use the /D compiler option to specify the _DEBUG macro. For example, in Microsoft C/C++ version 7.0 for MS-DOS and Windows or in Visual C++ version 1.0 or 1.5 for Windows, the command line might look like the following:
   cl /AS /D_DEBUG test.cpp safxcwd.lib
				
In Visual C++ 32-bit edition version 1.0, the command line might look like the following:
   cl /D_DEBUG /D_X86_ test.cpp nafxcwd
				
When you compile code that uses the Microsoft Foundation Classes in Programmer's WorkBench (PWB), select the Use MFC Libraries option. (To do so, choose Language Options from the Options menu, then choose Compiler Options, choose Additional Compiler Options, and select MFC Libraries. Then choose OK.) PWB automatically inserts the /D_DEBUG option when it compiles the debugging version of your application. The PWB-generated LINK command specifies the appropriate Microsoft Foundation Classes library and the appropriate C/C++ Run-time Library in the correct order.

When you compile code that uses the Microsoft Foundation Classes in Visual Workbench (VWB) in Visual C++ 1.0 or 1.5 for Windows, or Visual C++, 32-bit edition, version 1.0, select the Use MFC Libraries option. (To do so, choose Project from the Options menu, then select Use Microsoft Foundation Classes and choose OK.) VWB automatically inserts the /D_DEBUG option when is compiles the debugging version of your application. The VWB- generated LINK command specifies the appropriate Microsoft Foundation Classes library and the appropriate C/C++ run-time library in the correct order.

In Visual C++, 32-bit Edition, version 2.0 and later, internal makefiles automatically include a /D_DEBUG option on the build line debug targets. Therefore, removing /D_DEBUG from the preprocessor command line options does not cause an error.

Properties

Article ID: 85514 - Last Review: October 8, 2013 - Revision: 3.1
APPLIES TO
  • Microsoft Foundation Class Library 4.2, when used with:
    • Microsoft C/C++ Professional Development System 7.0
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
Keywords: 
kbnosurvey kbarchive kbbug kbdebug kbinfo KB85514

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com