我有一個關於在Xcode中使用Objective-C++模塊中的C++頭文件的問題。具體來說,爲什麼我可以在源文件中包含它們,但不包含頭文件?Xcode和C++頭文件
這裏是一個具體的例子。
我使用Xcode 7.2.1並有兩個項目。第一個是我打包到「myFramework.framework」中的C++框架。它暴露了「myFramework.h」,它反過來引入「myLib.h」。在「myLib.h」的頂部是「#include <string>」。
第二個項目是一個Objective-C iOS應用程序,它使用上述框架。在這個項目中,「myViewController.mm」(Objective-C++源代碼)在頂部有「#import」myFramework/myFramework.h「,並引用該頭文件中定義的東西。
此時一切都很好和不錯的。它建立和沒有問題的運行。
當我移動「#進口myFramework/myFramework.h」行「myViewController.h」,編譯,因爲它不能找到「」頭依賴失敗。
如果將「myViewController.h」的文件類型從普通的「C Header」更改爲Objective-C++頭文件無關緊要,無論哪種方式,Xcode的頭文件搜索路徑都不尋找標準的C++頭文件
所以我的主要問題是爲什麼這樣表現?爲什麼僅僅因爲它在一個頭文件中而被處理#include /#import?
我的第二個問題是,如果有一些方法可以使Xcode處理#include /#在導入到頭文件而不是源文件時相同嗎?
非常感謝!
你確定在編譯'.mm'文件時出現錯誤嗎?是不是'myViewController.h'導入到其他文件(然後該文件無法編譯)?順便說一下,不清楚你是否使用'#import「myFramework/myFramework.h」'或'#import' –
sergio
是的,就是這樣。 「main.m」隱藏在「支持文件」下。我習慣了它與所有其他來源位於同一個文件夾中。也許這在Xcode的開發過程中發生了某些變化,我不知道。但無論如何 - 都很好,謝謝! – Bungles
我已將我的評論移至答案,因此其他人更容易找到答案。 – sergio