我有一個C++應用程序,我試圖移植到iPhone並開始我試圖用obj-C++紋理加載器替換我的C++紋理加載器,以便我可以使用可可庫。從C++文件使用Objective-C++文件
我的很多C++文件(.cpp文件)調用紋理裝載機類似的:
GLuint mTexture = TextureLoader::LoadTexture("file.png") //LoadTexture is a static method`
,但每當我試圖做一個TextureLoader類(一個.mm文件中),有Obj- C代碼,我不得不使調用類也成爲一個.mm文件。
我想避免使用.mm的蠕變。我該怎麼做?它甚至有可能嗎?
基本上我有,有一個.mm文件...
GLuint TextureLoader::LoadTexture(const char* path)
{
//...lots of c and obj-c code
return texture
}
,是除了C++類的(或者是OBJ-C++在這一點?)
我想成爲能夠使用它從一個.cpp文件,而不必使呼叫類也.mm
是否有無論如何做到這一點?
乾杯傢伙。
謝謝帕維爾,你明白了。我認爲問題在於我必須在紋理加載代碼的頭文件中使用Obj-c代碼。這意味着當我的C++代碼包含.h文件時,編譯器不喜歡它。 我會嘗試總結一下: 假設我有Foo.cpp和Foo.h(僅用於C++),並且Foo.cpp需要包含TextureLoader.h,它包含一個C++類定義,其成員方法使用obj-c代碼在TextureLoader.mm中)。確保TextureLoader.h中沒有obj-c或可可代碼,否則Foo.cpp將不能#include它。 – user156848 2009-08-16 00:23:33
顯而易見的答案是 - 不要定義在頭文件中使用ObjC結構的成員函數;而是在.mm文件中定義它們。 – 2009-08-16 07:51:42