當我們在一個項目中想使用外部其他項目的一個類時,可以在項目中直接添加類文件到項目中。但是,在編譯的時候出現了這樣的錯誤:
Undefined
symbols for architecture x86_64: |
"_OBJC_CLASS_$_Person",
referenced from: |
ld:
symbol(s) not found for architecture x86_64 |
clang:
error: linker command failed with exit code 1 (use -v to see invocation) |
這說明編譯沒有問題,連接的時候出錯了,找不到導入的目標文件。
先看看是如何導入類文件吧。在項目文件夾上點右鍵,選擇Add file to…
Xcode添加文件到項目中
然後選擇需要添加的文件,不過下面的第一個複選框一定要選擇上:
選擇需要導入的文件
這裏第一個Copy Items的複選框需要勾選,不然選擇的就是導入一個引用,勾選後直接將文件導入項目中。
然後在main.m中使用:
#import
<Foundation/Foundation.h> |
int main( int argc, const char *
argv[]) |
Person
* person = [[[Person alloc] initWithFirstName:@ "Wang" |
然後編譯運行就出現了上面的錯誤了。是爲什麼呢?
遇到這種問題,首先想到的是導入文件編譯環境發生了變化,所以先選擇Product-Clean將項目緩存清理一下:
Xcode清理項目緩存
但是這樣做還是不行,那怎麼辦呢?我們應該這樣做,看項目有沒有編譯導入的文件,在這個位置查看:
選擇項目-Build Phases選項卡-Compile Sources
Xcode查看項目編譯項目
這裏只有一個main.m,Person.m沒有被編譯,當然錯誤了,將Person.m添加進去就OK了。點擊下面的”+”添加,注意只添加.m文件,不添加頭文件!
原文地址:Xcode技巧:項目導入外部文件後編譯運行出現Undefined symbols for architecture x86_64錯誤