gpt4 book ai didi

iOS应用程序中的C++算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:52 24 4
gpt4 key购买 nike

我有一个用 C# 编写的 DSP 音频 aglo,我想将其合并到 iOS 中。一位 friend 建议我转换为 C++ 而不是 Objective-C,因为它与平台无关。这是一个好的做法,有什么需要注意的陷阱吗?我的直觉是让它与 Obj-C 保持一致。我将如何在 iOS 中访问 C++ 函数?

谢谢

最佳答案

您可以自由地将 C++ 与 Objective-C 混合使用,称为“Objective-C++”。为了让编译器知道这是您的意图,您需要将 .m 文件重命名为 .mm

像这样混合代码不一定是个好主意,如果您的目标是可移植性,那将毫无意义。更好的办法是将 C++ 保存在单独的 .cpp 文件中,并创建一个简单的包装器类 (obj-c++) 以在您的 objective-C 和 C++ 对象之间传递数据(有效地包装器正在调解 obj -C 方法和 C++ 函数发送和返回数据)。

我最近在 github 上发布了几个简单的图像处理示例 - openCVSquaresopenCVStitch .值得您看一看,看看 C++ 代码是如何从 obj-C 中分离出来的。

openCV库有C++接口(interface),所以在项目中使用C++是在所难免的。 可以将所有代码混合到 .mm 文件中,但这是一种容易造成困惑的方法。

关于可移植性,您可以通过将 UI 代码与数据操作代码分开来实现。无论如何,您都应该为 MVC 执行此操作,因此按照这些示例用 C++ 编写您的模型几乎不需要额外的工作。 模型 是可移植的,UI 是并且应该是特定于平台的。

是否应该这样做将取决于其他因素,例如您对每种语言的熟练程度、框架和库的选择以及移植的可能性。不过,音频处理自然是这种方法的候选者。

关于样本的一些细节
代码跑不起来也不用担心(openCV框架会很麻烦。。。)主要是看代码是怎么拼凑的。我尽量使示例非常简单。

C++ 代码是从 openCV 发行版中包含的 C++ 示例移植而来的:squares.cppstitching.cpp .我试图尽可能少地改变这些以评估这种可移植性的想法。

大致来说,我必须解决两个问题......
1/删除了任何 UI 代码(因此我们只是将数据发送回 obj-C 端)。
2/修改 main() 函数,使其成为 obj-C 端的可调用函数。在 .cpp 头文件中,我声明了一个带有单个静态函数的简单类来促进这一点。显然还有更详细的空间,但这应该足以让您理解这个想法。

关于iOS应用程序中的C++算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com