Heim > Backend-Entwicklung > C++ > Warum erhalte ich mit SDL2 unaufgelöste externe Symbole __imp__fprintf und __imp____iob_func?

Warum erhalte ich mit SDL2 unaufgelöste externe Symbole __imp__fprintf und __imp____iob_func?

Linda Hamilton
Freigeben: 2024-11-28 15:50:15
Original
709 Leute haben es durchsucht

Why Am I Getting Unresolved External Symbols __imp__fprintf and __imp____iob_func with SDL2?

Unaufgelöste externe Symbole: __imp__fprintf und __imp____iob_func mit SDL2

Bei der Programmierung ist die Begegnung mit unaufgelösten externen Symbolen ein häufiges Problem, das sich in Verknüpfungsfehlern äußert. Zwei spezifische Symbole, die bei SDL2 häufig solche Fehler verursachen, sind __imp__fprintf und __imp____iob_func.

Das unaufgelöste externe Symbol __imp__fprintf entsteht, weil sich fprintf, das für formatiertes Drucken verwendet wird, in einer Dynamic Link Library (DLL) befindet. Compiler verknüpfen normalerweise zur Laufzeit eine Verbindung zu diesen Bibliotheken, aber manchmal kann der Linker die entsprechende DLL nicht finden. Dies kann passieren, wenn die DLL nicht im Systempfad vorhanden ist oder wenn die falsche Version verknüpft ist.

Das unaufgelöste externe Symbol __imp____iob_func hängt dagegen mit der Standard-Eingabe/Ausgabe (I/O) von C zusammen ) Funktionen. Insbesondere wurden mit Visual Studio 2015 Änderungen an der Definition von E/A-Funktionen wie stdin, stdout und stderr eingeführt. Diese Funktionen werden jetzt mit __acrt_iob_func definiert, während sie in früheren Versionen mit __iob_func definiert wurden. Dies kann zu Verknüpfungsfehlern führen, wenn Bibliotheken oder Code verwendet werden, der mit älteren Versionen von Visual Studio kompiliert wurde.

Um diese ungelösten externen Symbolfehler zu beheben, können Sie die folgenden Schritte ausführen:

  • Stellen Sie sicher, dass die erforderlichen DLLs, wie z. B. msvcrt.dll für __imp__fprintf, im Systempfad vorhanden sind.
  • Stellen Sie sicher, dass dies der Fall ist Verknüpfung zur richtigen Version der SDL2-Bibliotheken und DLLs.
  • Wenn __imp____iob_func der Übeltäter ist, definieren Sie __iob_func selbst in Ihrem Code, um ein Array mit {stdin,stdout,*stderr} zurückzugeben.
  • Um Fehler mit anderen stdio-Funktionen zu beheben, fügen Sie hinzu Legacy_stdio_definitions.lib zu den Linker-Optionen.

Indem Sie diese Schritte befolgen, können Sie die ungelösten externen Symbolfehler im Zusammenhang mit __imp__fprintf und __imp____iob_func effektiv beheben, wenn Sie mit SDL2 in Visual Studio 2015 arbeiten.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich mit SDL2 unaufgelöste externe Symbole __imp__fprintf und __imp____iob_func?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage