在 iPhone 应用程序中从 C++ 调用 Objective-C 函数

Calling an Objective-C Function from C++ in an iPhone App

我有一段用 C++ 编写的跨平台代码,使用 OpenCV。

我的 C++ 代码对图像输入做了一些处理。

我想使用 iOS 的 AVFoundation 解码视频并将数据发送到 C++ 进行处理。

我可以找到许多允许我在我的应用程序中使用 运行 C++ 代码的教程,但我需要的是从 C++ 调用一个 Objective-C 函数,该函数将请求视频的下一帧.

请帮忙。

哦,我知道 OpenCV 有一个 VideoReader class - 但我需要有自己的实现。

ObjectiveC 消息调用由编译器转换为对运行时库的调用 - 消息调用请参阅 objc_msgSend。您可以从 C++ 代码中手动调用此运行时函数。

Objective-C Runtime Programming Guide / Messaging

另一种可能更简单的方法是将 C++ 部分移植到 Objective-C++。

最简单的方法就是将 myFile.cpp 更改为 myFile.mm。然后编译器会将其解释为 Objective-C++ 并且您可以将 AVFoundation 导入 .mm 文件并使用 Objective-C.