Linkertoolwarnung LNK4210
Abschnittsabschnitt vorhanden; möglicherweise sind unbehandelte statische Initialisierer oder Terminatoren vorhanden.
Hinweise
Einige Code hat statische Initialisierer oder Terminatoren eingeführt, aber der Startcode der VCRuntime-Bibliothek oder dessen Entsprechung (die statische Initialisierer oder Terminatoren ausführen muss) wird nicht ausgeführt, wenn die Anwendung gestartet wird. Hier sind einige Beispiele für Code, der statische Initialisierer oder Terminatoren erfordert:
Globale Klassenvariable mit einem Konstruktor, Destruktor oder einer virtuellen Funktionstabelle.
Die globale Variable wurde mit einer nicht kompilierten Zeitkonstante initialisiert.
Um dieses Problem zu beheben, probieren Sie eine der folgenden Aktionen aus:
Entfernen Sie den gesamten Code mit statischen Initialisierern.
Verwenden Sie "/NOENTRY" nicht. Nachdem Sie /NOENTRY entfernt haben, müssen Sie möglicherweise auch /NODEFAULTLIB aus der Befehlszeile des Linkers entfernen.
Wenn Ihr Build "/MT" verwendet, fügen Sie "libcmt.lib", "libvcruntime.lib" und "libucrt.lib" zu Ihrer Linker-Befehlszeile hinzu. Wenn Ihr Build "/MTd" verwendet, fügen Sie "libcmtd.lib", "vcruntimed.lib" und "libucrtd.lib" hinzu.
Wenn Sie von "/clr:pure compilation" zu "/clr" wechseln, entfernen Sie die Option "/ENTRY " aus der Linker-Zeile. Dies ermöglicht die CRT-Initialisierung und ermöglicht die Ausführung statischer Initialisierer beim Starten der Anwendung. Die Option "/clr:pure compiler" ist in Visual Studio 2015 veraltet und wird in Visual Studio 2017 nicht unterstützt.
Für die /GS-Compileroption ist eine Initialisierung durch die __security_init_cookie
Funktion erforderlich. Diese Initialisierung wird standardmäßig im Startcode der VCRuntime-Bibliothek bereitgestellt, der ausgeführt _DllMainCRTStartup
wird.
- Wenn Ihr Projekt mit /ENTRY erstellt wird und /ENTRY eine andere
_DllMainCRTStartup
Funktion als übergeben wird, muss die Funktion aufgerufen_CRT_INIT
werden, um die CRT zu initialisieren. Dieser Aufruf allein reicht nicht aus, wenn Ihre DLL /GS verwendet, statische Initialisierer erfordert oder im Kontext von MFC- oder ATL-Code aufgerufen wird. Weitere Informationen finden Sie unter DLLs und Visual C++-Laufzeitbibliotheksverhalten .
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für