1. 程式人生 > >Objective-C/C++混編編譯器設定

Objective-C/C++混編編譯器設定

當使用Xcode編寫C++程式碼時,難以避免要使用xcode/C++混合編譯。

          如果你在Xcode中編寫的工程中既有Objective-C程式碼,又有C++程式碼,在沒有任何設定編譯器選項的預設情況下,你將會發現一下問題:

(1)編譯器報錯。莫名其妙的錯誤,如C++的關鍵字(如virtual, new, delete等)找不到,不能解析啊等問題

(2)以*.cpp結尾的純C++程式碼編譯沒有問題,但是既有Objective-c又有C++的檔案(*.mm)檔案就會報各種問題

在Xcode中,通常,Objective-c的字尾名位 .h/.m,C語言的字尾名為 .h/.c, C++的字尾名為.h/.cpp, 當一個檔案中既有objective-c又有C++程式碼時,字尾名為 .h/.mm。在編寫程式碼時要寫對字尾名。其次,你可能發現,字尾名都寫對了,程式碼也沒有任何問題,編輯器也沒有報錯,為什麼編譯的時候就報錯了呢?事實上,編譯器和編輯器的工作是區分開來的,編輯器就是你寫程式碼的地方,僅檢查程式碼語法是否有錯誤,你語法沒有錯誤當然不會報錯了。編譯器就是要編譯執行在編輯器中編寫好的程式碼,如果編輯器僅支援Objective-C,它怎麼可能編譯的了C++程式碼呢?

要讓編譯器知道程式碼中有C++程式碼,要對編譯器做一些設定,先看圖:


1.單擊你的工程,選擇TARGET下的目標檔案

2.在選項卡中選擇“Build Settings”選項

3.找到“Apple LLVM compiler x.x - Language”設定項(其中x.x為你的xcode預設的LLVM編譯器版本,不同的xcode版本不一樣)

4.圖中綠色選中的選項“Compile Sources As”,意思是要把工程按照哪一種語言進行編譯,預設是第一個“According to File Type”,將其改成Objective-C++即可。

        現在重新編譯一下你的工程是不是就可以成功編譯了呢。