- Kein selber definierter Einsprungspunkt; keine CRT-Funktionen überschrieben (Standardfall): Funktioniert.
- Kein selber definierter Einsprungspunkt, aber CRT-Funktionen überschrieben:
error LNK2005: atexit already defined in framework.obj
Die vorherigen Compiler-Versionen haben das zuerst definerte Symbol (meins) genommen und die CRT-Symbole ignoriert. - /ENTRY:krishtyMain; keine CRT-Funktionen überschrieben: CRT wird nicht mehr eingebunden. Alle CRT-Funktionen (_CxxThrowException() obwohl ich keine Ausnahmen benutze, _CrtDbgReport, __vcrt_uninitialize_critical, usw) sind undefiniert. Hat mit vorherigen Compiler-Versionen tadellos funktioniert.
- /ENTRY:krishtyMain und CRT-Funktionen überschrieben: Selbes Verhalten, aber wahrscheinlich nur deshalb keine doppelten Symbole weil die CRT erst garnicht eingebunden wird. Hat mit vorherigen Compiler-Versionen tadellos funktioniert.
Für mich klingt das, als ob sie sich gedacht haben: „Wenn jemand seinen eigenen Einsprungspunkt schreibt, können wir nicht garantieren dass die CRT initialisiert wird, und lassen sie direkt weg.“ (Das ist aber Quatsch, weil eine dynamisch eingebundene CRT durch DLL_PROCESS_ATTACH sehr wohl initialisiert wird.)
Kann ich ein Einbinden der CRT erzwingen? Ich habe versucht, MSVCRTD.lib explizit in die Linkerparameter zu schreiben, aber ohne Wirkung. (Spezialfall hard-coded?)
Bleibt mir sonst nur, entweder auf Einsprungspunkt oder auf die CRT zu verzichten?