从 Objective C 调用 C++

From Objective C call C++

我在从 objective-c 调用 c++ 中的某些函数时遇到问题。 我有以下代码。在 "objCFuncA" 中,我如何调用 "funcBCallback(std::string inText)" 函数?。谢谢

SampleCallback.h

class SampleCallback
{
public:
    static void funcA();
    static void funcBCallback(std::string inText);
};

SampleCallback.mm

void SampleCallback::funcA()
{
    [[SampleCallback_iOS shared] objCFuncA:"My text from C++"];
}

void SampleCallback::funcBCallback(std::string inText)
{
    NSLog(@"SUCCES GET RETURN");
}

SampleCallback_iOS.h

@interface SampleCallback_iOS : NSObject

+ (SampleCallback_iOS*)shared;

- (void)objCFuncA:(const char*)inString;

@end

SampleCallback_iOS.m

@implementation SampleCallback_iOS

static SampleCallback_iOS* instance = nil;

+ (SampleCallback_iOS*)shared
{
    @synchronized(self) {
        if (instance == nil) {
            instance = [[self alloc] init];
        }
    }
    return instance;
}

- (void)objCFuncA:(const char*)inString
{
    NSLog(@"Text from C++: %s", inString);

    // How to call SampleCallback::funcBCallback?
}
@end

不可能从普通 Objective-C 调用 C++ 函数(就像你不能从普通 C 调用 C++ 一样)。

不过,您可以将 Objective-C 文件转换为 Objective-C++。为此,只需重命名文件以使用扩展名 .mm 而不是 .m.