将char数组从ObjC传递给C.

时间:2015-11-01 00:52:46

标签: objective-c 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*

谢谢

2 个答案:

答案 0 :(得分:1)

您将错误的参数传递给calloc()。它需要两个参数,但你已经过了三个。编译器应该尖叫着你。

由于第二个参数是来自bytes的{​​{1}}指针,因此您有效地请求了一些巨大的分配。它可能失败了。通常会在控制台上记录有关该失败的消息。

你想:

NSData

答案 1 :(得分:0)

我的代码出了问题。

我应该叫做

memcpy(*message, [dMessage bytes], [dMessage length])

而不是

memcpy(message, [dMessage bytes], [dMessage length])