„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie behebe ich den Fehler „Undefinierter Verweis auf“ beim Verknüpfen statischer C-Bibliotheken mit C++-Code?

Wie behebe ich den Fehler „Undefinierter Verweis auf“ beim Verknüpfen statischer C-Bibliotheken mit C++-Code?

Veröffentlicht am 08.11.2024
Durchsuche:488

How to Resolve \

undefinierter Verweis auf Fehler beim Verknüpfen einer statischen C-Bibliothek mit C-Code

Beim Versuch, eine statische C-Bibliothek mit C-Code zu verknüpfen, kann es sein, dass Sie Trotz Änderung der Verknüpfungsreihenfolge treten Fehler „undefinierter Verweis auf“ auf. Dieses Problem ergibt sich aus den unterschiedlichen Symbolnamen, die bei der C- und C-Kompilierung entstehen und als „Namensmangling“ bekannt sind.

In C zeigt der Linker entzerrte Symbolnamen in Fehlermeldungen an, was verwirrend sein kann. Die Untersuchung der Objektdatei (*.o) mit „nm -u“ zeigt, dass die referenzierten Symbolnamen nicht mit denen in der Bibliothek übereinstimmen.

Um dieses Problem zu beheben, wurden Funktionen als externe Elemente eingebunden, die mit kompiliert wurden Die Funktionsdeklarationen des C-Compilers müssen in einem „extern „C“ {}“-Block eingeschlossen sein. Dies unterdrückt die C-Namensverstümmelung für alles innerhalb des Blocks.

Zum Beispiel:

extern "C" {
    #include 
    #include 
}

Alternativ können Sie Funktionsdeklarationen wie folgt in Header-Dateien einschließen:

#if defined (__cplusplus)
extern "C" {
#endif

/*
 * Put plain C function declarations here ...
 */

#if defined (__cplusplus)
}
#endif
Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729663094 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3