linker command failed with exit code 1 (use -v to see invocation)這個錯誤貌似遇見並不止一次,當我想用某個第三方類庫的時候(如SBJson),我直接把類庫文件copy到工程目錄里面,然后一編譯就出現這樣錯誤(並不是一定會出這樣錯誤),開始以為是網上下載的類庫本身問題,所以重新找類庫或者其他方式將它添加進去,只要不出錯就行,也一直沒有深入了解根本問題,今天在給工程添加一個FMDB(SQLIte第三方類庫)文件編譯時又出現這種錯誤,一開始以為工程問題,但是新建工程后還是出現這個問題,經過網上查找,得到了解決辦法;
- Undefined symbols for architecture i386:
- "_OBJC_CLASS_$_FMDatabase", referenced from:
- objc-class-ref in ViewController.o
- ld: symbol(s) not found for architecture i386
- clang: error: linker command failed with exit code 1 (use -v to see invocation)
在網上得到解決辦法是:
在工作左邊導航欄Target-->Build Phases-->compile Sources中,第三庫庫的所有.m文件都添加到里面,然后編譯通過了;
添加.m文件
根據對比可以看見 in FMDBTest,FMDBTest的Target里添加進去了了一些.m文件
對於以上錯誤,根據網友解答我的理解是
我們在使用這些第三方類庫文件時直接將其拖拽到工程之中,編譯的的時候Xcode也沒有自動引用,所以造成這樣錯誤,這就需要我們手動添加。假如我們在工程中新建某個文件就不會出現這樣問題;