ARCが有効な静的ライブラリを使用する非ARCプロジェクトがあります。これはサポートされているシナリオなので、すべて正常に動作します。つまり、Simulatorを含む4.xデバイスでコードを実行するまでです。その場合、コードは、次のリンカーエラーで吹く:ARC-有効コードの一部がinit
方法(self = [super init]
)のように、_objc_storeStrong
関数をコールしようとし、これは、すぐに起こるARCをサポートしている静的ライブラリが非ARCプロジェクトにリンクされているため、リンカエラーが発生する
dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
Referenced from: /Users/zoul/Library/Application Support/iPhone Simulator/4.3.2/Applications/…/Demo.app/Demo
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
。メインプロジェクトをARCに変換することで問題は解決しますが、他にも解決策があるかどうかを知りたいと思います。
ARCをサポートするLLVMを使用してリンクしていますか? – Krizz
最初に:ツールチェーンはおそらく、主プロジェクトでARCが有効になっているときにリンクするライブラリを追加したばかりです。あなたが写しで見つけられないならば、あなたはARCで1つのソースをコンパイルすることによってそれにリンクすることができるかもしれません。 – justin
それは素晴らしい考えです、@ジャスティン! 1つのARC対応ファイルでのトリックはうまくいかなかったが、リンカーにライブラリを含める正しい引数が見つかったので、うまくいくようだ。あなたはそれを答えとしてどうかできますか?簡単なものがあれば、それを編集して詳細を追加します。 – zoul