3

カスタムの静的フレームワークを使用して、A、B、C などのモジュールをパッケージ化します。A は基盤レイヤーであるため、B と C は A に依存し、すべて「セマフォ」という名前の A のシンボルを使用します。

ここで、A、B、C をアプリ「DemoX」に追加します。リンク時にエラーが発生した場合、DemoX は B と C のみを直接使用します。

変更: DemoX は、A を直接使用する静的ライブラリ "libM" に依存します。

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_Semaphore", referenced from:
      objc-class-ref in libM.a
      objc-class-ref in B
      objc-class-ref in C
ld: symbol(s) not found for architecture i386

実際には、"nm" コマンドを使用して A のシンボルを表示します。"_OBJC_CLASS_$_Semaphore" があります。それで、これを解決する方法は?

ありがとう!

4

1 に答える 1

4

私はこれを解決しました。

それはすべて私のせいです。このエラーはリリースでのみ発生します。これは、「デフォルトで非表示のシンボル」をYESにしてAをコンパイルするため、他の人はAが持つすべてのシンボルを見ることができないからです。いいえに設定してください。すべて問題ありません。

于 2012-08-23T11:14:14.823 に答える