(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren

Linkertoolwarnung LNK4210

Aktualisiert: November 2007

Fehlermeldung

'Abschnitt'-Abschnitt vorhanden; es sind möglicherweise unbehandelte statische Initialisierer oder Terminatoren vorhanden
section section exists; there may be unhandled static initializers or terminators

Im Code wurden statische Initialisierungen oder Terminatoren implementiert, der CRT oder ein entsprechendes Element (das die statischen Initialisierungen oder Terminatoren ausführen muss) wird jedoch beim Anwendungsstart nicht ausgeführt. Codebeispiele, die dieses Szenario verursachen, umfassen:

  • Globale Klassenvariablen mit einem Konstruktor, Destruktor oder einer virtuellen Funktionstabelle.

  • Globale Variablen, die mit einer von der Kompilierungszeit nicht unterstützten Konstanten initialisiert werden.

Führen Sie zur Behebung dieses Problems einen der folgenden Schritte aus:

  • Entfernen Sie den gesamten Code mit statischen Initialisierungen.

  • /NOENTRY sollte nicht verwendet werden. Nach dem Entfernen von /NOENTRY müssen Sie möglicherweise auch msvcrt.lib, libcmt.lib oder libcmtd.lib zur Linkerbefehlszeile hinzufügen.

  • Fügen Sie der Linkerbefehlszeile msvcrt.lib, libcmt.lib oder libcmtd.lib hinzu.

  • Entfernen Sie beim Wechsel von der /clr:pure-Kompilierung nach /clr die /ENTRY-Option aus der Linkerzeile. Dadurch wird die CRT-Initialisierung aktiviert, sodass beim Anwendungsstart statische Initialisierungen ausgeführt werden können.

  • Wenn das Projekt mit /ENTRY erstellt wurde und an /ENTRY eine andere Funktion als _DllMainCRTStartup übergeben wurde, muss die Funktion CRT_INIT aufrufen. Weitere Informationen erhalten Sie unter Verhalten der Laufzeitbibliothek und im Knowledge Base-Artikel Q94248, http://support.microsoft.com/default.aspx?scid=kb;en-us;94248.

Die /GS-Compileroption erfordert CRT-Startcode.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft