2013-02-06 66 views
3

我正在使用xcode 4.6。 SDK是iOS 6.1。我得到的錯誤是「架構armv7的未定義符號」而項目鏈接我自己創建的靜態庫,名爲「libEncrypt.a」。構建iPhone設備時xcode靜態庫鏈接錯誤

我確定我已經使用架構armv7創建了libEncrpt.a。使用「otool -a」來驗證靜態庫,它顯示下面的消息。不明白爲什麼xcode sill會像「架構armv7的未定義符號」

> otool -a libEncrypt.a 
Archive : libEncrypt.a (architecture armv7) 
0100644 505/20 108 1360127518 #1/20 
0100644 505/20 3604 1360127513 #1/20 
Archive : libEncrypt.a (architecture armv7s) 
0100644 505/20 108 1360127518 #1/20 
0100644 505/20 3604 1360127513 #1/20 

添加詳細錯誤消息的打擊:

Undefined symbols for architecture armv7: 
    "_OBJC_CLASS_$_libEncrypt", referenced from: 
     objc-class-ref in LoginViewController.o 
     objc-class-ref in SignupViewController.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

可以顯示整個錯誤消息嗎?你是否鏈接到任何其他庫? – monoxygen

+0

詳細錯誤信息:未找到符號(S):爲架構的ARMv7未定義符號: 「_OBJC_CLASS _ $ _ libEncrypt」,從引用:在LoginViewController.o objc級-REF objc級-REF IN SignupViewController.o LD對於架構armv7 clang:錯誤:鏈接器命令失敗,退出代碼1(使用-v查看調用) – jacksun

+0

我不認爲我鏈接到其他庫。 lib「libEncrypt.a」顯示在「項目>構建階段>與庫的鏈接二進制文件」中。 – jacksun

回答

2

仔細檢查您的「構建有源體系只有」在您的應用程序設置和靜態庫項目。

我有這個完全相同的問題,因爲我的「Build Active Architecture Only」設置爲YES,而不是我的iOS應用程序。當iOS應用程序嘗試執行調試構建時,它期望所有架構都存在,但是僅爲靜態庫構建armv7s,因爲我正在部署到我的iPhone 5.