<h4>1.Undefined symbols for architecture i386:</h4>
Undefined symbols for architecture i386:
“_OBJC_CLASS_$_XXX”, referenced from:
objc-class-ref in XXX
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1(use -v to see invocation)
這個錯誤的發(fā)生原因一般是“XXX”這個文件(類庫)雖然引入了工程中问慎,但是由于種種原因(常見于多人開發(fā)萍摊,svn同步不規(guī)范)導(dǎo)致“XXX”并未被添加到project.pbxproj這個文件中挤茄。
解決方法是點(diǎn)擊工程如叼,在targets界面中找到Build Phases,根據(jù)提示信息“XXX”來判斷缺少什么文件穷劈,一般如果缺少自定義的文件笼恰,XXX會是缺少的類名踊沸,那么就在Complie Sources中加入該文件。如果缺少類庫社证,則在Link Binary With Libraries中加入該類庫逼龟。
注意:對于靜態(tài)文件來說還有一種情況,該靜態(tài)庫未經(jīng)性真機(jī)與模擬器的.a文件合成追葡。此時建議通過控制臺查看靜態(tài)文件所支持的架構(gòu)腺律。查詢方法如下:
ipo -info /Users/hhh/Desktop/XXX.a
合成方法:
lipo -create /Users/xxx/Dev/libme/bin/Debug-iphoneos/libmecli.a /Users/xxx/Dev/libme/bin/Debug-iphonesimulator/libmecli.a -output /Users/xxxx/Dev/libme/bin/libmecli.a
右擊靜態(tài)文件,show in finder 找到合成的靜態(tài)文件
<h4>2."std::terinate()",referenced from:</h4>
錯誤中出現(xiàn)雙冒號則為C++代碼宜肉,由于Xcode 默認(rèn)情況下不支持C++匀钧。解決方案:將工程中任意一個.m文件后綴改為.mm
友情提示:
.c C代碼
.cpp C++代碼
.m C+OC代碼
.mm C + OC + C++ 代碼
<h4>3.Undefined symbols for architecture x86_64:</h4>
不支持64位架構(gòu)設(shè)備。
解決方案:
Build Settings-> Architecture-點(diǎn)擊other->將原來的$(ARCHS_STANDARD)修改為$(ARCHS_STANDARD_32_BIT)即可