在 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.
我有一段用 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.