2015-05-09 16 views
0

我得到Undefined symbols for architecture i386。下面是我所做的:Xcode「架構i386的未定義符號」錯誤沒有任何代碼變化,突然間

  1. 我檢查過很多次,誤寫.h.m擴展。

  2. 我刪除了框架搜索路徑,然後寫./被定義爲「遞歸」,因爲它是作爲解決方案提供的,但它也不起作用。

  3. 架構設置現在設置爲$(ARCHS_STANDARD)

    Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_EMDenemeSinaviCell", referenced from: 
        __TFC8EduMobil24EMAssesmentEvaluationNEW9tableViewfS0_FTCSo11UITableView21cellForR  owAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell in   EMAssesmentEvaluationNEW.o 
    ld: symbol(s) not found for architecture i386 
    clang: error: linker command failed with exit code 1 (use -v to see invocation) 
    
  4. 當我更改當前單元類,我正在使用另一個單元類它不會給出任何錯誤。但它提供了以下警告:

    file was built for i386 which is not the architecture being linked (x86_64): 
    

我該如何解決這個問題?

+0

試過在TargetSettings - > Build Phases - > Compile Sources下添加這個DenemeSinaviCell.m文件到編譯源文件中,然後再嘗試編譯和運行 – Anil

+0

是的,它就在那裏,放在編譯源文件下的Build Phase。 – Daredevil

+0

每當我改變單元格類型例如EMHomeWorkCell,它的工作原理沒有錯誤。 但是,當我使單元格類型EMDenemeSinaviCell,它給這個錯誤。 我已經定義了EMDenemeSinaviCell就像EMHomeWorkCell,所以它不應該給錯誤,爲什麼它給,idk。 – Daredevil

回答

1

如果您的類的.m文件未列在目標的「構建階段」選項卡的「編譯源」步驟下,則可能會出現此類錯誤。通常Xcode會爲你做這件事,但有時它會丟失情節,你需要手動添加.m文件。

要做到這一點:

TargetSettings - >構建階段 - >編譯源代碼 - >添加您的m級 - >構建和Ru

+0

謝謝,但它已經在那裏, 我建,它給出了相同的錯誤 – Daredevil

+0

這個類EMDenemeSinaviCell在你導入的另一個項目? – EnriMR

+0

號 它是同一個項目。 我所有單元類的所有.h和.m文件都在我唯一的項目的同一目錄下。 – Daredevil

0

你使用任何框架或不來自庫蘋果?分項目?這看起來像您正在使用僅適用於實際iOS設備或64位的靜態或動態庫,或者僅用於Mac OS X,並嘗試爲32位iOS模擬器(即32位英特爾,因此「i386」)。

所以我猜你要麼選擇了一個不好的庫,要麼選擇了32位模擬器(例如iPhone 4S),但是你的應用只適用於64位手機/模擬器(例如iPhone 6)。

PS - 其他猜測,也許你的方案已經搞砸了,它試圖建立你的iOS項目爲Mac?你的方案選擇器對設備說什麼?你的設備之一?模擬器? 「我的Mac」?

在構建設置
+0

我有一個項目,兩個目標。 我正在使用分析框架。 – Daredevil

+0

你說過:「你選擇了一個32位模擬器」 我該如何檢查並糾正這是否是這個問題? – Daredevil

+0

Xcode窗口的左上角有一個彈出窗口,您可以在其中選擇目標和設備/模擬器。 – uliwitness

0

> 「有效架構」 刪除所有不支持的架構,像I386,x86_64m等

如果你的架構將只有{ARMv7的,armv7s,arm64} - 它應該工作。 在構建設置>「體系結構」中也是如此。

+0

感謝, 在構建設置>「有效的體系結構」; 有---> arm64 armv7 和「Architectures」---> $(ARCHS_STANDARD) 我應該改變什麼? – Daredevil

+0

Architectures ='arm64 armv7'。 希望它能幫助你。 – yonivav

+0

「架構」---> $(ARCHS_STANDARD)在我的項目中已經顯示爲'arm64 armv7', 儘管如此,我仍然按照你的說法嘗試過,但它並沒有像那樣工作: – Daredevil

相關問題