Verknüpfen Sie die Objective-C-Anwendung mit der statischen C ++ - Bibliothek

7

Ich versuche, Xcode zu verwenden, um eine Objective-C-Desktopanwendung zu erstellen, die mit einer statischen C ++ - Bibliothek verknüpft. Ich benutze den Apple Compiler. Ich erhalte den folgenden Linkerfehler:

%Vor%

Es scheint, als ob es nicht gegen die C ++ - Standardbibliothek bindet. Ist das das Problem und wenn ja, wie kann ich dafür sorgen, dass es dagegen bindet?

Aktualisieren :

Wenn ich dem Build eine leere CPP-Datei hinzufüge, wird alles kompiliert und läuft gut. Ich brauche nur eine Möglichkeit, dem Linker mitzuteilen, dass er mit der C ++ - Standardbibliothek verlinkt. Ich habe versucht, alle Build-Einstellungen in Xcode durchzusehen, aber ich kann nichts finden, was hilft.

    
drewag 21.01.2012, 03:20
quelle

4 Antworten

17

Fügen Sie -lstdc ++ oder -lc ++ hinzu (abhängig davon, welche C ++ - Laufzeit Ihre statische Bibliothek erwartet) zu "Andere Linker Flags" unter "Build Setting":

    
servn 22.01.2012, 19:07
quelle
2

Das gleiche Problem mit Xcode 6, habe ich gelöst, indem ich " libstdc ++. 6.0.9.dylib " in der " Link Binary with Libraries " Buildphase & amp; ; Hinzufügen von -lstdc ++ zu " Andere Linker-Flags " unter Buildeinstellung

    
Urmi 02.12.2014 13:37
quelle
1

Es scheint komisch, dass libcore.a im Namensraum Init nach einer Klasse namens std::ios_base sucht. Ich glaube nicht, dass std::ios_base::Init eine Standardklasse ist.

Abgesehen davon sollten Sie überprüfen, ob libcore.a tatsächlich x86_64 code enthält. Sie können den Befehl file zum Überprüfen verwenden. Zum Beispiel:

%Vor%

Wenn die Ausgabe des Befehls file keine Zeile " for architecture x86_64 " enthält, können Sie die Bibliothek nicht zum Erstellen einer ausführbaren 64-Bit-Datei verwenden.

    
rob mayoff 21.01.2012 03:43
quelle
-1

Andere Linker-Flags -lstdc ++ Hat mir in Xcode5 nicht geholfen. Aber finde ähnliche Dinge in Apple LLVM 5.0 - Lnaguage - C ++

Standardeinstellung war libc ++ (LLVM C ++ Standard ~ blabla) und änderte es in libstdc ++ (GNU-Sache)

Jetzt gibt es keinen Fehler beim Verknüpfen !!! und jetzt muss ich herausfinden, dass es gut läuft.

trotzdem danke für den Rat.

    
user2958279 19.11.2013 19:47
quelle