2014-10-31 34 views
0

我在Xcode 6.1中添加了一個單元測試目標到一個現有的項目。如果我做一個簡單的測試,像XCTest不會鏈接我的目標應用程序的類

XCTestAssert(1 + 1 == 2, @"Addition");

它建立並正常工作。當我嘗試使用我的目標應用程序中的任何類時,出現鏈接器錯誤。我無法弄清楚如何讓它正確鏈接。兩個目標都在爲相同的體系結構構建。我嘗試設置一個新項目,並且可以使用目標應用程序中的類。我可能錯過了一些簡單的事情,但我無法弄清楚它是什麼,在搜索其他解決方案時我找不到任何有用的東西。

我得到的錯誤是

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

NoteManager是我試圖測試的類。

謝謝你

回答

1

所以我找到了解決方案。在我的目標應用程序(不是測試目標)中,我需要將「默認隱藏符號」標誌設置爲NO。

2

您應該檢查主目標中的剝離和隱藏符號設置。鏈接器在-bundle_loader選項中從應用程序二進制文件(Application.app/Application)中讀取您的類。

nm <path to Application.app/Application> | grep NoteManager 

我還建議您重建項目設置更改

後:您可以通過此命令來檢查符號
相關問題