我正在为 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 文件。
知道为什么会这样吗?
提前谢谢。