Как вызвать функцию C из Objective-C


В настоящее время я пытаюсь конвертировать видео на iOS с помощью FFmpeg. Я изменил их пример в транскодировании.c в соответствии с моими потребностями.

Как на самом деле вызвать следующую функцию из Objective-C:

int mainFunction(int argc, char **argv);

Я не уверен, как представить аргументы из Objective-C. Любая помощь будет очень признательна.

1 2

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, поэтому приношу извинения за любые синтаксические ошибки.