2011-11-28 104 views
2

我有一個爲armv7和i386編譯的fat靜態庫。在我的iPhone/iPad項目一切工作正常,但我只能在armv7設備上安裝我的應用程序,所以iPhone 3gs和...iOS條件鏈接靜態庫

有一種方法可以在armv6上運行我的項目,所以我可以將它安裝在iPod觸摸和舊的iPhone版本(也如果我禁用使用armv7庫)。

我試試這個:

#ifdef _ARM_ARCH_7 
... //include and use of armv7 library 
#else 
... //not include armv7 library 
#endif 

但是當我編譯我的項目,我有鏈接錯誤...

命令/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++失敗與退出代碼1

所以有一種方法來運行我的應用程序的所有類型的設備,但編譯armv7時鏈接特定的庫?

感謝您的幫助!

+0

你今天在你的項目中如何包含靜態庫?你是在項目設置中使用'-l'(例如'-l libmyFatLibrary'),還是將靜態庫拖入要鏈接的庫和框架的文件列表中? –

+0

我拖動文件列表中的胖庫...並正常工作。我嘗試使用-l選項? –

回答

2

您需要弱鏈接該庫。打開構建設置並查找其他鏈接器標記。您需要添加兩個條目,第一個是「-weak_library」,第二個是庫文件的路徑(您可能需要搜索傳遞給鏈接器的內容以查找內容)。

它們需要按順序排列,因爲此列表按照它們呈現的順序變成鏈接器的參數。