2009-04-29 27 views
2

我得到這個錯誤如何解決未定義的符號錯誤?

Undefined symbols: 
".objc_class_name_MyClass", referenced from: 
    [email protected][email protected][email protected] in infoViewController.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

當參照下面的靜態方法:

[MyClass ClickComment:self.navigationController]; 

MyClass的是在我引用我的應用程序項目的靜態庫中定義。當我開始輸入「[MyClass」...時,我收到消息提示。應用程序項目知道MyClass存在,並定義了哪些方法。但是,我得到了上述錯誤。評論這個調用可以讓項目無誤地構建。

在靜態庫中,我有一個引用所有庫的.h文件的.h文件。這樣,應用程序項目只需引用靜態庫中的一個.h文件。靜態庫項目也有一個應用程序。我用它來測試靜態庫。我可以做上述通話。當靜態庫構建設備/調試版本並且應用程序項目構建了模擬器/調試時,我通常會看到這些類型的錯誤。但是,兩個版本都是同步的。

我知道有一個參考問題,但我不確定如何解決它。有什麼建議麼?

回答

5

這意味着頭文件在編譯期間被找到,但鏈接器不知道靜態庫。確保您的靜態庫在項目視圖中的「目標 - > YourMainTarget>鏈接二進制庫」下列出。

請參閱http://developer.apple.com/tools/XCode/XCodeprojects.html

+0

我現在正在使用它。主要是在MyClass的靜態庫中,我需要向MyClass.m添加一些#import語句。我發現這很奇怪,因爲所有#import語句都在上面提到的.h文件中,這個文件被項目的PCH文件引用,我在庫目標的Compiled Headers中看到這個文件。某處,仍然存在着脫節。 – 4thSpace 2009-04-30 02:20:35