将现有c代码移植到iOS/iPhone
我有一个视频解码器的源代码,是用C写的 该代码已在linux操作系统下成功编译和执行。后来,在ndk和JNI的帮助下,我还在android应用程序中移植了这个解码器 现在,我的要求是将这个应用程序移植到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
- 是否有ndk和jni等工具将此代码移植到iOS
- 该代码是否存在任何可靠性问题
更多信息但它并没有那么简单,这取决于代码是如何用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函数