[英]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.