G ++ neue ABI Probleme
Ich habe ein Problem mit dem neuen ABI, das in GCC für C ++ 11 eingeführt wurde. Nach dem Upgrade auf GCC 5.3 wird mein Projekt nicht mehr kompiliert. Die Fehlermeldungen, die ich bekomme, sind einfach:
undefined reference to `tokenize(std::__cxx11::basic_string' ...more characters
ode
undefined reference to `extract(std::string const&)'
So sieht es aus, als hätte ich etwas durcheinander gebracht und GCC kann nicht entscheiden, ob ich das alte ABI oder das neue (das__cxx11::
Teil fehlt in einigen Fehlermeldungen und ist in anderen vorhanden)?
Ich habe verschiedene Lösungen versucht, um das Problem zu beheben:
Vorbeigehen-D_GLIBCXX_USE_CXX11_ABI=0
zu GCC,Vorbeigehen-D_GLIBCXX_USE_CXX11_ABI=1
zu GCC, Setzen des Makros direkt im Quellcode,setting theabi_tag
-Attribut in den Deklarationen, über die sich GCC beschwert hat, als das @ übergeben wur-Wabi-tag
Flagge Leider funktionierte keiner von beiden (d. H. Der Code konnte kompiliert werden). Das einzige, was ich weiß, ist, dass nur Funktionen @ zurückgebstd::string
oder als Parameter verwenden, kann nicht verknüpft werden. Was zu erwarten ist, angesichts dessen, was ich über das Problem im Internet gelesen habe. Ich konnte das Problem nicht in einem einfachen Beispielprogramm reproduzieren, um es hier zu präsentieren.
Gibt es eine offensichtliche Lösung für mein Problem, die ich vermisse?