Ios 如何从Objective-C调用C函数

Ios 如何从Objective-C调用C函数,ios,objective-c,c,ffmpeg,Ios,Objective C,C,Ffmpeg,我目前正在尝试使用FFmpeg在iOS上转换视频。 我根据自己的需要修改了他们的例子 如何从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 emu

我目前正在尝试使用FFmpeg在iOS上转换视频。 我根据自己的需要修改了他们的例子

如何从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

 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);
char**cStringArray=malloc(([stringArray count]+1)*sizeof(char*);
对于(int i=0;i<[stringArray count];++i)
{
NSString*aString=[stringArray objectAtIndex:i];
cStringArray[i]=[aString UTF8String];
}
cStringArray[[stringArray count]]=NULL;
int result=main函数([stringArray count],cStringArray);
自由(cStringArray);

我已经很长时间没有使用Objective-C了,所以对于语法错误我深表歉意。

我不是100%,但我很确定您可以按原样调用函数——即,
int-tempInt=main函数(100,&tempChar)
所以我很好奇,我只看到了
**
NSError
,,你介意快速解释一下
char*args={…}
是一个有效参数吗?@AO当我使用
char*args={“foo”,“bar”,NULL}时,它是无效的,它是一个typoHi@JeremyP,Xcode给我一个警告
标量初始值设定项中的元素过多
。你知道为什么它会给我这个警告吗?@martisan,因为它错了。我的回答中有一个拼写错误,我改正了。它应该是
char*args[]={“foo”,“bar”,NULL}