1

Xcode 4.3 から、リリースされたばかりの新しい 4.4 バージョンに移行しましたが、フレームワークを構築するときに、この性質のリンカー警告が数十回表示されます。

Direct access in <some method> to global weak symbol <some other method>
means the weak symbol cannot be overridden at runtime. This was likely
caused by different translation units being compiled with different
visibility settings.

この警告について SO には他にもいくつか質問がありますが、-fvisibility=hidden -fvisibility-inlines-hiddenどこでもオンになっていることを確認してから完全な再構築を行うことで解決されるようですが、私の場合、これは警告を解決していません。私はトリプルチェックを行い-fvisibility=hidden -fvisibility-inlines-hidden、C++ ファイル、Objective C++ ファイル、プリコンパイル済みヘッダーなど、Xcode によって行われたすべてのコンパイルに存在します。プロジェクトの Xcode の DerivedData を一掃するなど、完全な再構築を行いました。何も役に立たないようです。

これらの警告は Xcode 4.3 では発生しませんでしたが、戻ってサニティ チェックを行うために 4.3 をオンにした別の Mac が手元にありません。私はまだライオンを実行しています。

もう 1 つの奇妙な点は、プロジェクトに、Xcode 4.4 コマンド ライン ツールを使用してすべて同じコードをビルドする外部 SCons ビルド システムが-fvisibility=hidden -fvisibility-inlines-hiddenあり、これらのリンカー警告が報告されないことです (両方のケースで同じコンパイラ バージョン)。

引き続き掘り下げていきますが、専門家の洞察をいただければ幸いです。たぶん、私が気付いていない Xcode 4.4 の変更でしょうか?

ありがとう。

4

1 に答える 1

2

-fvisibility-inlines-hidden.framework ビルドと .app ビルドの両方から削除する必要があることがわかりました。これにより、警告が消えました。

于 2012-10-21T05:35:02.683 に答える