4

私はCocoaベースのユニバーサルダイナミックライブラリを持っています。これには、機能をエクスポートしたいスタティックライブラリも含まれています。エクスポートシンボルファイルを使わなければ最新のことはできないようですが、これは私のものです...何とかしてください。私は "Symbols Hidden with default"(GCC_SYMBOLS_PRIVATE_EXTERN、-fvisibility = hidden)の設定を使用していません。 ダイナミックライブラリからベースクラスをエクスポートしようとしたときに、より具体的には、ライブラリに含まれていない派生クラスで、さらに具体的には64ビットビルドでメンバを使用しようとしたときに問題が発生しました: " 未定義のシンボル: 「_OBJC_IVAR _ $ _ PluginBase.fConn」 」 私は、64ビットの変更を認識しています:http://developer.apple.com/library/mac/#releasenotes/Cocoa/RN-ObjectiveC/_index.htmlは、 『64ビットクラスとインスタンス変数のアクセス制御』エクスポートシンボルファイル:Objective C派生クラスメンバ、64ビット

そして、私が追加した場合、もちろん、すべての作品_OBJC_IVAR _ $ _ PluginBase.fConnをエクスポートファイルに...ただし、64ビットビルドの場合のみ、32ビットのものはそのようなことについては知らない: " 未定義のシンボル: から参照 "_OBJC_IVAR _ $ _ PluginBase.fConn"、2つのエクスポートファイルを持っている: -exported_symbol [s_list]コマンドラインオプション 」

唯一の解決策は、別の回避策です。しかし...私はEXPORTED_SYMBOLS_FILE設定に "ビルド設定条件を追加"を使うことはできません。

アイデア(パブリックアクセサメソッドを使用する以外に)

答えて

1

xcconfigファイルを使用してアーキテクチャ条件付きビルド設定を行うことができます。 GUIでは不可能なようです。以下を含むビルドの設定ファイルを作成します。

EXPORTED_SYMBOLS_FILE[arch=i386]=$(SRCROOT)/SymbolsList32Bit 
EXPORTED_SYMBOLS_FILE[arch=x86_64]=$(SRCROOT)/SymbolsList64Bit 

をし、[プロジェクトの設定で、プロジェクトのビルド設定であることを、そのファイルを設定し、あなたが行くように良いことがあります。 (明らかに、あなたのパスをあなたのファイルを指し示すようにしなければなりませんが、うまくいけばいいと思います)

それは私のために働いていました。助け

・ホープ(FWIWあなたもMY_SETTINGのように、SDKの名前を条件付けすることができます[SDK = iphoneosは*] FOO、MY_SETTING [SDK = MAC] = BARなどを=)!

関連する問題