私はiPhoneに移植しようとしているC++アプリケーションを持っています。私はC++のテクスチャローダーをobj-C++のテクスチャローダーに置き換えようとしています。私はココアの図書館を利用することができます。 Obj-を持ってC++ファイルのObjective-C++ファイルを使用する
GLuint mTexture = TextureLoader::LoadTexture("file.png") //LoadTexture is a static method`
が、私は(.mmファイル内)TextureLoaderクラスを作成しようとするたび:
私のC++ファイル(.CPPファイル)の多くのようなものでテクスチャローダーを呼び出します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ファイルが含まれるようになったとき、コンパイラはそれを気に入らなかった。 私が試してみて、要約します: は、そのメンバーのメソッド(OBJ-Cのコードを使用するC++クラスの定義が含まれている、私はFoo.cppとがfoo.h(C++のみ)を持っているとFoo.cppはTextureLoader.hを含む必要があると言いますTextureLoader.mmで)。そこにはOBJ-CやココアのコードがTextureLoader.hにされていないか、他Foo.cppがそれを#includeすることはできませんことを確認してください。 – user156848
明白な答えは - にObjCは、ヘッダファイルで構築使用あなたのメンバ関数を定義していません。その代わりに.mmファイルで定義してください。 –