从 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
.
我在从 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
.