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