Swift vs Objective-C -重用c++代码
Swift vs Objective-C - for reusing C++ code
我们有一个android应用程序,它的关键代码是在JNI库中用c++编写的。
我们即将实现同一应用程序的iOS版本。该计划将在Objective-c中实现,因为它可以直接集成C代码。然而,随着Swift的发展,我们希望对Swift和Objective-C有一些建议,记住我们必须使用现有的c++库和任何Swift瓶颈。
重用c++代码的方法是编写一个Objective-C包装器类,头文件中不包含任何c++内容,而是用objective - c++()编写的实现文件。mm后缀)。
一个Objective-C类可以在Swift和Objective-C中使用,所以对于一个Swift项目,如果你有几个Objective-C类并不重要。
目前还没有办法直接从Swift调用c++,我暂时也不会期待它。如果你看一下如何从Swift调用C,你可能会觉得你对这种情况很满意。
感谢您的回复。经过慎重考虑,我们决定使用Objective-C,甚至发布了应用程序。
其中一个关键原因是我们公司的大多数开发人员都精通C/c++,而Objective-c比Swift更容易上手。一旦我们定义了Makefile模板并在现有的Makefile文件中使用它们,与现有的C/c++代码的集成就很容易了,不需要任何桥接代码。唯一额外的事情是为胖库编写脚本。因此根据我们的经验,我会推荐Objective-C而不是Swift。
编写一个Swift应用程序并在其中集成一个c++源代码是没有问题的。
步骤如下:
1)将c++源文件添加到Xcode项目中。如果你使用的是第三方库,你需要将其作为框架添加到你的项目中。
2)创建一个Header桥文件并将其添加到项目中。这个文件将包含你想在swift模块中使用的c++函数签名。如https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
所述3)当你调用头桥文件中提到的c++函数时,你需要创建一个特殊的指针对象,如-所述https://gist.github.com/neilpa/b430d148d1c5f4ae5ddd
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值