Linker fehler __imp__invalid_parameter und _CrtDbgReport in VS
Heute hatte ich einen Fehler beim statischen linken einer EXE bekommen:
CStringUtil.obj : error LNK2001: unresolved external symbol _CrtDbgReport
Ein anderes mal lautete der Fehler so:
CStringUtil.obj : error LNK2001: unresolved external symbol __imp__invalid_parameter
Beide Probleme hatten die gleiche Ursache. Die Einstellungen beim Linker für das statische linken mit den vcruntimes war falsch gesetzt. Folgende Werte sind richtig:
- Runtime Library Debug: Multi-threaded Debug DLL (/MTd)
- Runtime Library Release: Multi-threaded Debug DLL (/MT)
Es sei nochmal erwähnt dass es hier Absicht ist statisch zu linken, da einige Lösungen aus dem Netz vorschlagen man solle doch die Runtime "richtig" auf shared zu stellen.