2012-11-05 47 views
4

我在通過http://www.icodeblog.com/2011/04/07/creating-static-libraries-for-ios/後製作了一個靜態庫。爲了測試這個庫,我做了一個新項目並將靜態庫拖到項目上,並試圖測試它的一個方法。但它給了我錯誤「_OBJC_CLASS _ $ _ MyLib」,引用來自:「。 MyLib是我創建的庫的名稱。未找到適用於架構i386的iOS符號

我在創建靜態庫的步驟。 1.創建一個新的Xcode項目。 2.選擇選項來創建可可觸摸靜態庫。 3.在MyLib.h中編寫了兩個函數,併爲斐波那契數列寫了一個實現,其他實現了一個數的階乘生成。 3.構建項目並在MyLib.a文件上單擊以在finder中顯示該部分。 4.將MyLib.a文件和MyLib.h拖放到名爲MyLib的新文件夾中。

任何幫助,請

+0

爲i386硬件架構未定義的符號: 「_OBJC_CLASS _ $ _ MyLib中」,從引用: objc級,裁判在LibTestViewController.o LD:符號(S)沒有找到i386硬件架構 鐺:錯誤:連接命令失敗退出代碼1(使用-v來查看調用) –

+0

如何構建i386體系結構 –

+0

感謝您的信息 –

回答

13

在構建庫,框架或應用程序適用於iOS,XCode中只會編譯爲目標構建設置中指定的架構目標代碼。 XCode也將只鏈接到具有內置指定架構的二進制文件。

在XCode中,如果選擇目標,您可以在構建設置選項卡下看到目標架構。它將包含像arm6,arm7和i386這樣的值。

在iOS模擬器中運行代碼時,您的桌面上運行的代碼是i386體系結構。

在設備上運行時,二進制文件具有爲該體系結構構建的「片」。 如果二進制文件中沒有正確的體系結構「切片」,它將不會運行。

如果您在模擬器中運行iOS應用程序時遇到缺少i386體系結構錯誤,則需要確保您的應用程序及其所有相關庫已經爲i386體系結構構建。

此外,還要檢查目標的生成設置中是否將「僅生成活動架構」設置爲NO。

如果你不能重建依賴庫,因爲你沒有源代碼,你將不得不在支持arm6或arm7架構的設備上測試。

+0

感謝您分享此類有用信息 –

+1

我通過將構建活動體系結構僅設置爲NO來重建代碼,並再次嘗試使用我之前建立的框架,但仍然給我同樣的錯誤。我再次通過在構建設置的有效架構中輸入i386值以及armv7,armv7s來重建它,但仍然都是徒勞的 –

+0

@ashutosh Bhatt我也嘗試了上述答案,它不工作,請你指導我如何修復i386錯誤。 – Arun

1

我有完全相同的問題,並最終能夠得到它在Xcode 4.5和iOS 6中工作時,當我讀這個線程的答案。 @idz的答案效果很好,但它不理想,你不得不將圖書館的項目包括在你的應用程序項目中,然後將其設置爲依賴項。

步驟1-8非常簡單明確。您還需要確保標題搜索路徑項目設置是準確的。祝你好運!

XCode 4.3: Static Library Generation

2

我有同樣的問題,當我試圖添加AC頭在CPP文件中像下面

//in c++ header file 
#import "cHeader.h" 

長期掙扎期間,我學會了之後,要在CPP文件導入的C頭,你需要這樣做:

//in c++ header file 
extern "C"{ 
    #import "cHeader.h" 
} 

和我的問題解決了。

相關問題