集成華為的eSpace SDK 時,編譯華為提供的demo程序,SDK里面有三個文件編譯報錯:
DBContact.h
CircleInviteDataModel.h
CircleInviteDataModel.mm
1.其中DBContact.h中有個static方法報錯,搜索了一下,發(fā)現(xiàn)沒有其他地方引用此方法,既然這樣,那就直接注釋掉這個方法
2.至于CircleInviteDataModel.mm這個文件,里面更是一堆莫名其妙的代碼,簡單看了一下,里面大多是非ARC時期的代碼,還有些變量名、類型名沒有聲明,華為工程師建議直接刪除這個文件,這樣一來就簡單干脆,直接刪除這個文件。既然.mm文件刪了,.h文件也沒有存在的意義了,所以把CircleInviteDataModel.h一起刪除。
如此,解決編譯錯誤,但是接下來,出現(xiàn)了167個鏈接錯誤,如下所示:
ld: warning: directory not found for option '-L/Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/Depend/eSDK/Release-iphoneos'
ld: warning: directory not found for option '-L/Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/Depend/eSDK/Debug-iphonesimulator'
ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/V200R003C00_20150210S(SDK)/eSpaceIOSSDK/Build/Debug-iphoneos'
ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/eSpaceSDKlib_iphone/Release-iphoneos'
ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/eSpaceSDKlib_iphoneTR6/eSpaceSDKlib_iphone/Release-iphoneos'
ld: warning: ignoring file /Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/eSpaceSDKlib_iphone/Release-iphoneos/libeSpaceIOSSDK.a, file was built for archive which is not the architecture being linked (i386): /Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/eSpaceSDKlib_iphone/Release-iphoneos/libeSpaceIOSSDK.a
Undefined symbols for architecture i386:
"_AMR_EXTENTION", referenced from:

14444590898694.jpg
把鏈接器的錯誤信息翻來覆去的看,無非原因是相關(guān)的庫沒導(dǎo)入,或者指令體系結(jié)構(gòu)不正確,但是按照要求改了多次依然無效,最后無意間搜索了一下ld:warning:ignoring file這行警告信息,根據(jù)提示,修改了編譯選項:Build Settings->Build Options->Enable BitCode->NO 設(shè)置以后,又根據(jù)網(wǎng)上搜索到的答案:
可能原因二:正如這個錯誤提示所指出的那樣,缺少了i386架構(gòu)的東西。這很可能是由于項目中包含的靜態(tài)庫是被編譯用于真機(jī)測試的,大家都知道蘋果手機(jī)cpu是arm架構(gòu),而mac筆記本(當(dāng)然也包括運(yùn)行于其上的iphone-simulator)是intel架構(gòu)。所以當(dāng)這個靜態(tài)庫被編譯用于device的時候,在目標(biāo)為simulator下的編譯是會報錯的。
解決方法一:
直接真機(jī)調(diào)試。
解決方法二:
重新為simulator編譯靜態(tài)庫,然后有一個更高端的解決辦法,就是將兩種架構(gòu)的靜態(tài)庫合并:
果斷連上真機(jī),問題成功解決??磥斫鉀Q有些問題真是靠經(jīng)驗,光看錯誤信息表面看不出什么來。感謝那位提供答案的網(wǎng)友的熱心分享。