2014-01-15 62 views
1

我用C++編寫代碼,我想在我的IOS應用程序中使用它的一些方法,因此可以將C++庫「t.cpp」導入到XCode中的IOS應用程序? 如果是的什麼是簡單的方法來做到這一點?將C++代碼導入IOS應用程序

回答

2

是的,這將工作沒有錯誤,但您可能需要更改Xcode C++編譯器設置(語言級別和運行時庫),具體取決於您使用的iOS版本。

當涉及到在Objective-C代碼中實際使用C++類時,您只需將任何文件從.m重命名爲.mm即可。

當您想要在Objective-C頭文件中包含C++頭文件時,會發生複雜問題,其中.m.mm都會看到Objective-C頭文件。在這種情況下,您可能會發現需要將更多文件從.m更改爲.mm才能使其正常工作,但如果這種方式過於繁重,則可以採用其他方法。

+2

爲了避免將C++頭文件暴露給太多其他文件,我喜歡編寫包裝相應C++類或功能的Objective-C類。然後,理想情況下,C++頭文件只包含在包裝文件的'.mm'文件中,Objective-C包裝類的'.h'文件有一個很好的乾淨的界面,沒有提示C++。 –

+0

@esker聽起來像一個很好的解決方案。 – trojanfoe

0

只需將文件添加到項目。

0

只有在translation unit包含C++頭文件時,您才需要從.m和.mm中重命名文件。然後,模塊被C++「感染」,需要使用Objective-C++編譯器進行編譯。

只有在任何C++頭文件將直接或間接地從該模塊包含/導入時才需要。沒有必要重命名全部文件。此外,如果此C++代碼依賴於C++標準庫,則還需要通過在可執行二進制文件中設置適當的構建設置,確保可執行二進制文件與C++標準庫鏈接。

例如,在您的應用程序的目標構建設置,下面的選項添加到其它鏈接器標記
-lc++
如:
OTHER_LDFLAGS = -ObjC -lc++

注意:

如果可能的,不要在一個public Objective-C頭文件中包含/導入C++頭文件,因爲所有模塊在導入這個Objective-C頭文件後都會被C++感染,併成爲Objective-C++。