Library Mismatch with MSVC4.x Compiler

Article ID: 774
Last updated: 05 Feb, 2008
Article ID: 774
Last updated: 05 Feb, 2008
Revision: 1
Views: 2757
Posted: 25 Jun, 1997
by Dean J.
Updated: 05 Feb, 2008
by Dean J.
Problem


I get general protection faults when operator delete is being called in my application or when my program crashes.


Cause


MSVC4x ships with two versions of the runtime libraries - debug and non-debug. For example, MSVCRT40.DLL is used when you build your application in release mode and corresponds to the MSVCRT.LIB import library. MSVCRT40D.DLL is used when you build in debug mode and corresponds to the MSVCRTD.LIB import library.

The Rogue Wave makefiles will link to the debug libraries when you use BMODE=DEBUG and MSDEBUG=1 on the make command line to build the library. Thus, it will always use the debug runtime libraries. If you are building a release application, everything else will try to use the release versions of the runtime libraries. Trying to use both of these libraries at once can cause GPFs. The fix for this is to always match the runtime libraries with the Tools.h++ library (such as debug vs. non-debug, multi-thread vs. single-thread, etc.).


Action


In Microsoft's IDE, go to the menu Build|Settings and click on the C++ tab. Then choose Category: Code Generation and under Use run-time library:, choose the appropriate library for the build mode and version of Tools.h++ you are using.
This article was:   Helpful | Not helpful
Report an issue
Article ID: 774
Last updated: 05 Feb, 2008
Revision: 1
Views: 2757
Posted: 25 Jun, 1997 by Dean J.
Updated: 05 Feb, 2008 by Dean J.

Others in this category