Как вызвать функцию C из Objective-C
В настоящее время я пытаюсь конвертировать видео на iOS с помощью FFmpeg. Я изменил их пример в транскодировании.c в соответствии с моими потребностями.
Как на самом деле вызвать следующую функцию из Objective-C:
int mainFunction(int argc, char **argv);
Я не уверен, как представить аргументы из Objective-C. Любая помощь будет очень признательна.
1 ответ:
Objective-C-это надмножество C. Все, что вам нужно сделать, это вызвать его из вашего кода Objective-C.
char* args[] = { "foo", "bar", NULL }; // Might need the NULL to emulate command line arguments. int result = mainFunction(2, args);
Вы можете передать argc и argv непосредственно из вашего собственного
main
int main(int argc, char** argv) { int result = mainFunction(argc, argv); }
Если ваши аргументы находятся в массиве NSStrings, вам нужно преобразовать их в обычный массив C строк C:
char** cStringArray = malloc(([stringArray count] + 1) * sizeof(char*)); for (int i = 0 ; i < [stringArray count] ; ++i) { NSString* aString = [stringArray objectAtIndex: i]; cStringArray[i] = [aString UTF8String]; } cStringArray[[stringArray count]] = NULL; int result = mainFunction([stringArray count], cStringArray); free(cStringArray);
Прошло много времени с тех пор, как я в последний раз делал Objective-C, поэтому приношу извинения за любые синтаксические ошибки.