webentwicklung-frage-antwort-db.com.de

xcode with boost: linker (Id) Warnung zu Sichtbarkeitseinstellungen

Ich habe für mein iPhone Xcode-Projekt ein Boost-Framework über den folgenden Link verwendet: https://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html

es funktioniert gut, aber ich bekomme immer hunderte von Apple Mach-O Linker (id) Warnungen wie:

Direkter Zugriff in __ZN5boost15programmoptionen6detail7cmdline24handle_additional_parserERSt6vectorISsSaISsEE auf das globale schwache Symbol __ZTVN5boost17bad_function_callE bedeutet, dass das schwache Symbol zur Laufzeit nicht überschrieben werden kann. Dies lag wahrscheinlich daran, dass unterschiedliche Übersetzungseinheiten mit unterschiedlichen Sichtbarkeitseinstellungen kompiliert wurden.

Wie werden diese Warnungen im Code beseitigt?

bearbeitet: Durch Setzen von Standardmäßig ausgeblendete Symbole = JA, ich habe es geschafft, die meisten Warnungen zu entfernen, aber es sind noch 3 übrig, die nicht verschwinden. Kann mir jemand sagen, warum?

nochmals bearbeitet: Nach einem Rebuild sind auch die restlichen 3 Warnungen weg! Also hat meine Lösung funktioniert!

29
Gob00st

Doe hat gerade herausgefunden, wie Hunderte von Warnungen wie folgt beseitigt werden können: Setzen Sie für ein gesamtes Ziel oder Projekt die Einstellung Standardmäßig ausgeblendete Symbole build aufYES.

24
Gob00st

Wenn mehrere Projekte Boost enthalten, muss jedes Projekt die gleichen Werte für haben

 Symbols Hidden by Default
 Inline Methods Hidden
35
cyrilchampier

Der Linker beschwert sich über unterschiedliche Sichtbarkeitseinstellungen zwischen Ihrem Projekt und Boost.

Sie können dieses Problem auch beheben, indem Sie Boost mit denselben Kompatibilitätseinstellungen neu kompilieren.

Einfach hinzufügen

cxxflags=-fvisibility=hidden

und

cxxflags=-fvisibility-inlines-hidden

zur bjam Kommandozeile.

4
Benoit Blanchon

Wenn mehrere Projekte Boost enthalten, muss jedes Projekt die gleichen Werte für haben

Standardmäßig ausgeblendete Symbole Inline-Methoden ausgeblendet

nerith sagte ist richtig, aber in Xcode 4.6.3 sind sie nicht die oben genannten "standardmäßig ausgeblendeten Symbole" und "ausgeblendeten Inline-Methoden", und ich habe gcc_symbols_private_extern auf yes gesetzt, die Warnung verschwindet.

1
Samuel Lu

Festlegen von Symbolen, die standardmäßig ausgeblendet sind toNOund Inline-Methoden, die ausgeblendet sind toNOfür mich funktioniert. Es muss kein Flag zu anderen C++ - Flags hinzugefügt werden.

1
Desert Rose

Ich hatte auch dieses Problem.

Es stellt sich heraus, dass ich so etwas unachtsam gemacht habe:

#pragma GCC visibility Push(default)
#include <SomeExternalLibrary.h>
void myExampleSymbol();
#pragma GCC visibility pop

Was ich gelöst habe, indem ich zu folgendem gewechselt habe:

#include <SomeExternalLibrary.h>
#pragma GCC visibility Push(default)
void myExampleSymbol();
#pragma GCC visibility pop
0
OLL