0

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 ファイルを追加することは避けたいと思います。

なぜこれが起こっているのですか?

ありがとうございます。

4

1 に答える 1