Ich kompilierte eine Bibliothek mit g++
und ich möchte dagegen mit gcc
verknüpfen.
Problem ist ich einen Fehler, während dagegen die Verknüpfung:Wie werden umgebende Zeichen um ein Symbol in einer gemeinsam genutzten Bibliothek entfernt?
undefined Verweis auf ‚functionName`
(functionName- ist der Name der Funktion in der Bibliothek)
obwohl die Funktion existiert in der Symbolliste und ich gebe den Pfad zu gcc
während der Verknüpfung an.
Es geschieht, weil die Funktion mit umgebenden Zeichen in der Liste angezeigt wird (Ich denke, das für das Überschreiben ist?):
Z12functionNameiSt9__va_list
Ich weiß, dass diese Zeichen entfernen ich die Funktionsdeklaration mit extern "C"
umgeben soll . Und ich tat das:
Aber die umgebenden Zeichen erscheinen immer noch um den Funktionsnamen in der Symbolliste. Und deshalb kann gcc
es nicht finden.
Ich Kreuzkompilierung für Linux Arm yokto mit arm-poky-linux-gnueabi-gcc
und arm-poky-linux-gnueabi-g++
auf Ubuntu Desktop 16.
Warum sind nicht die umliegenden Zeichen entfernt werden und wie kann ich sie entfernen? Ich werde diese Funktion niemals außer Kraft setzen. Wenn diese wirklich zu überschreiben sind, brauche ich sie nicht.
edit:
gelöst. Die Funktionssignatur in ihrer Deklaration unterschied sich von der Signatur in ihrer Definition ... Also war das Schlüsselwort extern
umsonst.
int functionName(int argc, ...); //declaration
int functionName(int argc, va_list args) //definition
Vielleicht haben Sie vergessen ein # #include ' –
@BasileStarynkevitch - Es ist enthalten –