C++とOpenGLで書かれたゲームをiOSとOpenGL ES上で移植しています。元のバージョンでは、画像データをスプライトとして読み込むためにlibpngとjpeglibを使用しています。これらをCoreGraphics関数に置き換えたいと思います。画像の読み込み機能が含まれているC++ソースファイルの先頭に C++ソースでCGImageを使用しているときに「呼び出す機能がありません...」
は、私が追加した以下:#ifdef TOUCH_VERSION
#include <Foundation/Foundation.h>
#include <CoreGraphics/CoreGraphics.h>
#else
#include <png.h>
#include <jpeglib.h>
#endif
TOUCH_VERSION
コンパイラフラグが定義されている(そしてそれが行方不明に文句いないことから、働いていますpng.hおよびjpeglib.h)。私が抱えている問題は、CGImage関数を認識していないということです。たとえば、
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename(path);
の結果はエラーImageBuffer.cpp:166:42: No matching function for call to 'CGDataProviderCreateWithFilename'
となります。最初にCFとCGインクルードを追加したとき、CoreGraphicsのタイプと関数名がオートコンプリートされたので、ヘッダーのインポートはうまくいっていると推測しましたが、NSStringやその他のObjective Cタイプが定義されていないというエラーがありました。私は-x objective-c
をCフラグに追加し、-x objective-c++
をC++フラグに追加してこのエラーを解決しましたが、上記のエラーが表示されました。
ありがとうございました!
'path'は' const char * '型ですか? –
ありがとう@StephanLechner - あなたは絶対に正しいです。私はまったく同じ発見をしました。私はC++で同じ関数名を持つことができますが、引数の型が異なることを忘れていました。間違った引数の型を使用しても、予期しない型が関数に送られたというエラーは必ずしも発生しません。私はObjective-Cを長すぎる使っています;) – mashers