Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将现有c代码移植到iOS/iPhone_Iphone_Ios_Porting_Code Reuse - Fatal编程技术网

将现有c代码移植到iOS/iPhone

将现有c代码移植到iOS/iPhone,iphone,ios,porting,code-reuse,Iphone,Ios,Porting,Code Reuse,我有一个视频解码器的源代码,是用C写的 该代码已在linux操作系统下成功编译和执行。后来,在ndk和JNI的帮助下,我还在android应用程序中移植了这个解码器 现在,我的要求是将这个应用程序移植到iOS(即iPhone)。我的问题是: 是否有ndk和jni等工具将此代码移植到iOS 该代码是否存在任何可靠性问题 我试着在谷歌上搜索同样的内容,但无法获得足够的信息来进行移植程序 任何关于遗嘱的建议或有用的链接都将不胜感激。请回复同样的问题。提前谢谢。好消息 iPhone使用的语言Obje

我有一个视频解码器的源代码,是用C写的

该代码已在linux操作系统下成功编译和执行。后来,在ndk和JNI的帮助下,我还在android应用程序中移植了这个解码器

现在,我的要求是将这个应用程序移植到iOS(即iPhone)。我的问题是:

  • 是否有ndk和jni等工具将此代码移植到iOS
  • 该代码是否存在任何可靠性问题
我试着在谷歌上搜索同样的内容,但无法获得足够的信息来进行移植程序

任何关于遗嘱的建议或有用的链接都将不胜感激。请回复同样的问题。提前谢谢。

好消息

iPhone使用的语言Objective C是C的超集,这意味着所有C代码都是本机支持的。您根本不需要转换代码


更多信息

但它并没有那么简单,这取决于代码是如何用C编写的

如果直接添加文件和调用函数不起作用,则需要对文件名进行以下更改-

  • 使文件扩展名为.mm而不是.m
  • 将.c文件重命名为.mm
  • 将.h文件重命名为.hpp(一旦我将C文件移植到我的 (项目)

如上所述,请参考此内容。是的,所有C代码在Objective-C中都是有效的,因为Objective-C是C的超集。不过,这有点扭曲。声明实际上是

“所有C语法在Objective-C中均有效”


无法保证您的所有代码在iOS环境中都能100%正常运行。由于您可以从C或其他特定于机器/操作系统的操作系统调用UNIX系统,因此可能有部分代码在iOS中不受支持。如果您编写了所有正在使用的C代码,并且确信它不包含此类调用或类似的内容,那么您就可以了

Objy-C编译器也编译C和C++代码,你试过编译吗?不,它和Linux中的一样吗?如果你不使用iOS SDK中没有的外部库,它将编译成没有问题,否则你可以尝试编译你的依赖,实际上我没有任何依赖关系。我知道这一点,因为我已经把它移植到android上了。在android中,我们通过编译创建一个共享对象文件。如果是ios,应该创建什么??我还使用JNI从android的java接口调用c代码的主要函数。那么,在iOS中,它的等价物是什么?你可以创建一个静态的/动态的库,或者只是把它添加到你的项目中,创建一个库的好处是,你的代码每次都没有编译,这是C++的问题,这是C++的,但是编译C是被问的。让代码保持原样。将其放入静态或动态库,并从Objective-C代码中使用。@trojanfoe:这是一条非常有用的注释。在创建静态库之后,如何从代码的ios部分调用c代码的主函数??因为在android中,我们使用jni调用本机代码的main函数。@Zax通常在库中并没有“main”函数;您通常提供创建和操作对象的函数。然而,这不再是iOS的问题,而是如何维护可用于JNI和普通C/C++/Objective-C的代码。@Zax您只需将库链接到项目,导入所需的头并正常调用函数。从ObjC中可以看到,您可以像在C中一样调用任何C函数