[英]Passing char array from ObjC to C
我有一个包含纯c代码和由ObjC编译器[ .m file
]处理的c代码的项目。 由ObjC编译器处理的类具有以下类别:
unsigned long getMessage(char ** message) {
*message = (char*)calloc(1, [dMessage bytes], [dMessage length]);
memcpy(message, [dMessage bytes], [dMessage length])
return [dMessage length];
}
dMessage
是一个充满文本的NSData
对象。
在C端,我这样做:
char* msg = NULL
unsigned long length = getMessage(&msg)
调用后, msg
为空,但长度变量设置为正确的大小。
我应该怎么做才能在objc和c之间传递char*
?
谢谢
您将错误的参数传递给calloc()
。 它需要两个参数,但是您要传递三个参数。 编译器应该为此大声疾呼。
由于第二个参数是NSData
的bytes
指针,因此您实际上在请求一些大的分配。 可能是失败了。 通常会在控制台上记录有关该故障的消息。
你要:
*message = (char*)calloc([dMessage length], 1);
这是我的代码中的错误。
我应该打电话
memcpy(*message, [dMessage bytes], [dMessage length])
代替
memcpy(message, [dMessage bytes], [dMessage length])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.