NSImage クラスの C++ ラッパーを作成していますが、作成した追加関数に問題があります。簡単な要約は次のとおりです。
NSImageExtras.h
@interface NSImage (MyExtensions)
-(NSString*) myExtraFunction;
@end
NSImageExtras.mm
#import "NSImageExtras.h"
@implementation NSImage (MyExtensions)
-(NSString*) myExtraFunction
{
return @"Hello World";
}
@end
NSImageWrapper.h
class NSImageWrapper
{
public:
// nsImage is of type (NSImage*)
NSImageWrapper(void* nsImage) {myImage = nsImage;}
~NSImageWrapper() {}
CFStringRef myExtraFunction();
// Cast this into (NSImage*)
void* getNSImage() {return myImage;}
private:
void* myImage;
};
NSImageWrapper.mm
#include "NSImageWrapper.h"
#import "NSImageExtras.h"
CFStringRef NSImageWrapper::myExtraFunction()
{
return (CFStringRef) [(NSImage*) myImage myExtraFunction];
}
これはコンパイルされます。しかし、関数を呼び出そうとするとmyExtraFunction
、関数が見つからないためエラーが発生します。に変更するimport "NSImageExtra.h"
とimport "NSImageExtra.m"
機能しますが、インポートに .m ファイルを追加することは避けたいと思います。
なぜこれが起こっているのですか?
ありがとうございます。