Anwendungsfall: Ich möchte eine statische Bibliothek von Drittanbietern verwenden, die libstdc ++ verwendet (kann nicht geändert werden), also muss ich meine Anwendung mit libstdc ++ verknüpfen. Wenn ich jetzt C ++ 11-Funktionen in meinem eigenen Code verwenden möchte, müsste ich libc ++ in Xcode auswählen und zusätzlich mit libstdc ++ verknüpfen, um die statische Bibliothek zu erfüllen.
Mein Problem ist, dass obwohl ich libc ++ in "Build settings" ausgewählt und "-lstdc ++" zu "Other linker flags" hinzugefügt habe (auch über "Build phases & gt; Link Binary mit Libraries"), bekomme ich linker Fehler für letzteres, das heißt für libstdc ++ Funktionen / Klassen, die von der 3rd Party Lib referenziert werden.
Wie kann ich das Projekt so konfigurieren, dass es mit beiden C ++ - Standardbibliotheken verknüpft wird? Es sollte theoretisch möglich sein, da libc ++ in seinem eigenen Inline-Namespace std::__1
ist.
Ich bin gerade auf dieses Problem gestoßen, und meine Lösung war, dass Sie -lstdc++
auf die anderen Flags setzen, dass Sie /usr/lib/libstdc++.dylib
einfügen.
Mein Vorzug ist, dass, wenn xcode / clang -std=c++
gesetzt hat, die ältere .dylib explizit geladen werden muss.