繁体   English   中英

从ObjC传递char数组到C

[英]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() 它需要两个参数,但是您要传递三个参数。 编译器应该为此大声疾呼。

由于第二个参数是NSDatabytes指针,因此您实际上在请求一些大的分配。 可能是失败了。 通常会在控制台上记录有关该故障的消息。

你要:

*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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM