Yes, it is confusing.
In the Dark GDK templates they set the following in the Debug Configuration:
Runtime Library - Multi-threaded Debug (/MTd)
which statically links the libcmtd.lib runtime library which is a debug version of the libcmt library. This is perfectly correct for debug builds apart from the fact that we are then statically linking in a release version of the DGDK library which has been statically linked against the libcmt.lib library.
These two libraries are not compatable you start to see linker errors complaining about definitions in one library already defined in the other.
So what TGC appear to have done is exclude the debug runtime with the following setting in the linker:
Ignore Specific Library - msvcrt, libcmtd, atls
which appears to work until you do something like include a standard library header e.g.
#include <string>
This then causes the linker to statically link to the libcpmt.lib library and back come the linker errors.
IMHO when linking to a static release library the runtime library should never be set to /MTd beacuse you are asking for trouble.
Set it to /MT instead.
So long as you have the following setting:
Linker->Debugging->GenerateDebugInfo = YES(/DEBUG)
then you should have debug capability including being able to set breakpoints, just ensure you are running your program in a window and not full screen. You will not be able to debug within the linked libraries, only in your own code.
Of course, the ideal would be for TGC to release a debug version of the DGDK library allowing us to use the /MTd setting with full debug capability. It does however mean you have to link to the appropriate library dependent on the type of build you are doing.
Hope this helps!
No matter how good your code is, someone will improve on it