2012-04-12 76 views
12

時添加可達性類失敗我添加了SystemConfiguration框架。我正在部署3.2和更高的目標。我忘了添加一些東西嗎?當我嘗試構建

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

請檢查您的網絡連接或運營商網絡,這_OBJC_CLASS _ $ _可達意味着可達性問題,以互聯網爲設備 – Charan 2012-04-12 07:30:25

+1

請對這個樣子.http://stackoverflow.com/questions/9804526/reachability-ios-5-1-ipad – sandy 2012-04-12 07:31:10

回答

41

好的,線索都在你發佈的錯誤報告中。

雖然鏈接(該消息是從連接器LD),它在你的項目中的所有符號的編譯後出現,該消息說

「在AppDelegate中,你已引用稱爲可達一類對象

"_OBJC_CLASS_$_Reachability" 

並儘可能鏈接器而言可達是不確定的。

因此,請檢查您的項目中是否正在編譯Reachability。有幾種方法可以做到這一點。也許最明顯的辦法是 enter image description here

1選擇導航窗格中

2項目文件選擇目標

3選擇構建階段

4展開編譯源代碼部分

*現在檢查將被編譯的源代碼列表d爲您丟失的類,你的情況Reachability.m

如果丟失,使用+按鈕,將文件添加到目標。

另一種方式是

enter image description here

1選擇你想不被編譯

2打開Utilities面板

3選擇文件檢查選項卡

文件您項目中的每個目標都會有一個複選框,您可以很容易地看到您的.m正在爲每個/所有目標編譯文件。

+1

解決了我的問題..謝謝.. – 2012-10-14 07:49:23

+1

+1這樣好的解釋。 – Kuldeep 2012-11-23 12:02:16

+0

非常感謝! – DmitryKanunnikoff 2017-07-28 20:37:09

1

您可能忘記在項目中包含Reachability類了!

0

當我升級到最新版本的Mixpanel時,我遇到了類似的問題。錯誤閱讀:

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from: 
     objc-class-ref in Mixpanel.o 

您可以按照大摩的解決方案,直到最後一個步驟,然後,而不是擴大編譯源代碼部分,你必須展開鏈接二進制與圖書館部分代替,並添加CoreTelephony.framework來源包含CTTelephonyNetworkInfo

你可以閱讀更多關於蘋果公司的官方網站上CTTelephonyNetworkInfo類參考這裏:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/Reference/Reference.html