Obj-c(++)调用引用指针的api



对Objective-C/objective - c++很陌生,我正在编写一个c++库的包装器。

其中一个函数接受对指针的引用和对int型的引用来创建缓冲区并返回其大小,如下所示:

int GetData(char*& pcBuffer, int& iBufferSize);

我真的不清楚如何通过Objective-C/c++与此接口

到现在为止,我一直在写这样的电话

-(int) GetData: (NSString*) pcData
: (int) iBufferSize;

然而,由于pcBuffer引用的指针将由库代码创建和填充,我应该使用什么作为数据类型?

另外,由于int是作为引用而不是指针传递的,如何正确声明呢?

有什么可能的帮助吗?

c++函数可能分配字符串缓冲区并在第一个参数中返回它,而在第二个参数中返回分配的缓冲区的大小。

你不需要在Objective-C端模拟相同的接口,因为你可以使用返回的缓冲区来实例化NSString。剩下的是处理函数的返回值,我假设这是一个错误代码,以防出现问题:

- (nullable NSString *)getDataWithError:(NSError **)error {
char *buffer;
int size;
int errCode = GetData(buffer, size);
if (errCode == 0) {
return [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
} else {
if (error) {
*error = [NSError errorWithDomain:MyErrorDomain code: errCode userInfo:nil];
}
return nil;
}
}

作为奖励,由于错误报告机制的存在,可以很好地从swift调用上面的函数:

let value = try MyObject().getData()

相关内容

  • 没有找到相关文章