我目前正在尝试使用FFmpeg在iOS上转换视频。
根据我的需求,我已经修改了他们在transcoding.c中的示例。
我该如何从Objective-C实际调用以下函数:
int mainFunction(int argc, char **argv);
我不确定如何从Objective-C提供参数。非常感谢您的帮助。
我目前正在尝试使用FFmpeg在iOS上转换视频。
根据我的需求,我已经修改了他们在transcoding.c中的示例。
我该如何从Objective-C实际调用以下函数:
int mainFunction(int argc, char **argv);
我不确定如何从Objective-C提供参数。非常感谢您的帮助。
Objective-C是C语言的超集,您只需要从Objective-C代码中调用它即可。
char* args[] = { "foo", "bar", NULL }; // Might need the NULL to emulate command line arguments.
int result = mainFunction(2, args);
main
函数传递argc
和argv
参数。 int main(int argc, char** argv)
{
int result = mainFunction(argc, argv);
}
如果您的参数是NSString类型的数组,则需要将它们转换为普通的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了,如果有语法错误请见谅。
**
与NSError
一起使用,您能否简单解释一下char* args = {...}
作为有效参数的原因? - A Ochar* args = { "foo", "bar", NULL };
时,Xcode会给我一个警告Excess elements in scalar initializer
。你有什么想法为什么会出现这个警告? - martisanchar* args[] = { "foo", "bar", NULL };
- JeremyP
int tempInt = mainFunction(100,&tempChar)
。 - A O