我有一個非ARC項目,使用啓用ARC的靜態庫。這是一個受支持的方案,以便一切正常。也就是說,直到我在4.x設備上運行代碼,包括模擬器。在這種情況下,代碼炸燬與下面的鏈接器錯誤: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-代碼的嘗試在init
方法(self = [super init]
)來調用_objc_storeStrong
功能,等等。將主項目轉換爲ARC可解決問題,但我想知道是否還有其他解決方案。
您是否使用支持ARC的LLVM進行鏈接? – Krizz 2012-01-06 10:37:13
首先:工具鏈可能只是在主項目啓用ARC時添加了一個鏈接庫。如果您無法在成績單中找到它,那麼您可以通過編譯一個來源與ARC進行鏈接。 – justin 2012-01-06 10:41:51
這是個好主意,@Justin!單個支持ARC的文件的技巧並不奏效,但我設法找到了鏈接器包含庫的正確參數,它似乎可行。你可以取悅這個答案嗎?一個簡單的會做,我會編輯它來添加細節。 – zoul 2012-01-06 10:48:24