У меня есть проект с чистым кодом c и кодом c, обработанным компилятором ObjC [.m file
]. Один обрабатывается ObjC компилятор имеет следующий класс:Передача массива символов от ObjC до C
unsigned long getMessage(char ** message) {
*message = (char*)calloc(1, [dMessage bytes], [dMessage length]);
memcpy(message, [dMessage bytes], [dMessage length])
return [dMessage length];
}
dMessage
является NSData
объект заполнен текстом.
На стороне С, я:
char* msg = NULL
unsigned long length = getMessage(&msg)
После вызова msg
пусто, но переменная длина устанавливается для корректировки размера.
Что мне делать, чтобы пройти char*
между objc и c?
Спасибо
Что такое 'getMessage' действительно делает? Данные уже выделены в объекте «NSData», поэтому просто держите его и получите доступ к необработанным байтам через '[dMessage bytes]'. – trojanfoe
Это функция, написанная на C, доступ к некоторым данным, которые хранятся в базе данных, к которой я обращаюсь к библиотеке ObzC и коду. Я должен передать его в библиотеку, написанную на чистом C, и я не хочу менять эту библиотеку, хочу, чтобы она была как можно ближе к оригиналу. – Krystian