Print
Category: Compiler and Linker
Hits: 913

The Embarcadero C++ Builder 2010 has a new option to compile projects (EXE and DLL's) as Wide (TCHAR = wchar_t). This switches to Unicode. Unfortunately if a DLL Project is build with TCHAR=wchar_t and uses dynamic runtime library (RTL) there are annoying message saying "two different CRTDLLs are loaded. CG might report false errors (c:\windows\system32\cc32100mt.dll)([name of the DLL-Project])".

You can get rid of the message by switching the TCHAR back to char. Place UNICODE and _UNICODE to the defines. In general Embarcadero says the dynamic RTL should be turned off for DLL projects. This in fact helps too, but sometimes its not an option. Specially when using DLL's as Class Libraries which are loaded on startup (2nd binding), the dynamic RTL must be truned on. otherwise you'll get a CodeGuard message saying that the memory you are releasing was allocated in a different RTL.

Be sure that the error message does not show the two CRTDLLs cc32100mt.dll and cc32100.dll. In this case one project uses multithreading where as the multithreading is disabled by an other project.

The issue is reported to Embarcadero with Report #86335 (Quality Central)