c++ - 将 C++ 库与 Objective-C 应用程序链接和使用

标签 c++ objective-c xcode linker dylib

我正在编写一个图形应用程序,使用 Objective-C 作为前端,使用 C++ 进行图形处理和网络通信。我在 Apple 的网站上四处阅读,寻找一种方法将带有我的 C++ 代码的 .dylib.so 链接到我的 Xcode 项目,但似乎没有任何效果。我能够让项目引用它并链接到它,但是当我试图从那个 .dylib 调用函数时,它说它不知道我想做什么。有谁知道这里发生了什么?

我知道 Objective-C 拥有我需要的所有库来处理图形和网络,但我只是想这样做。我已经有一段时间没有使用 C++ 了,我想学习更多的 Objective-C,那么有什么比一起使用它们更好的方法呢?

谢谢, 罗比

最佳答案

我从事的大多数项目都有 ObjC 前端和 C++ 后端。如果你专门处理函数,那么 Dave Gamble 的名称 mangle fix 是正确的,但如果你处理更复杂的情况,你需要同时处理 ObjC 和 C++ 对象,最好的办法是包装 C++ 对象在 ObjC 对象中。使用不透明引用(这是 void* 的一种非常奇特的说法),您实际上可以在 ObjC 中传递 C++ 对象,反之亦然。我有一些 sample code这可能会有帮助。

也就是说,对于图形,使用自定义 C++ 而不是使用 Core Image 和相关框架可能会严重影响性能。 Core Image 和其他图形框架针对 Mac 进行了高度优化,您不太可能使用手写 C++(或者甚至不是专门针对 Mac 的编写良好的 C++)做得更好。当你迁移到 10.6 和 grand central dispatch 时,性能差异将更加显着,因为你将失去所有你可以免费获得的并行化进步。这与 ObjC 无关; Core Image 是 C 语言。您可以随心所欲地从 C++ 中调用它。我只是建议不要在 Mac 上以任何语言进行自定义图形处理,除非您需要可移植性或者您拥有击败 Core Image 所需的专业知识。

关于c++ - 将 C++ 库与 Objective-C 应用程序链接和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233381/

相关文章:

c# - 在 C++ dll 中分配内存,在 C# 中释放

ios - 尝试实现 TableView 并获取线程 1 : signal SIGABRT error?

c++ - DirectX 11 (C++) 中的多个 RenderTarget

c++ - 在 C++ 中附加两个无符号字符的位运算符

c++ - 为什么 qDeleteAll 不在容器上调用 clear

ios - 在 Swift 中从 Objective-C 访问 extern NSString

objective-c - iOS Xcode 键盘完成按钮功能

iphone - 在 Objective C 中格式化 NSNumber

ios - Swift 3 中的 Hashids.org 不工作

swift - 如何在 mac os x 应用程序中通过 shell 命令访问文件?