用纯C++创建一个Objective-C块



我想创建一个带有CGDisplayStreamCreateWithDispatchQueuec函数的CGDisplayStream,该函数需要一个CGDisplayStreamFrameAvailableHandler作为参数。CGDisplayStreamFrameAvailableHandler是一个objective-c块。我试着使用c++lambda,但这不起作用:

No viable conversion from '(lambda at ###RECTRACTED###)' to 'CGDisplayStreamFrameAvailableHandler' (aka 'void (^)(CGDisplayStreamFrameStatus, uint64_t, IOSurfaceRef _Nullable, CGDisplayStreamUpdateRef _Nullable)')

我发现:C中的Objective-C块但这并没有真正的帮助,因为他们没有解释用纯c或c++创建objective-c块需要什么。

如何创建一个可以传递给CGDisplayStreamCreateWithDispatchQueue的有效对象?

这对我有效:

CGDisplayStreamFrameAvailableHandler handler = ^void(CGDisplayStreamFrameStatus status, uint64_t timestamp, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) { std::cout << "Update" << std::endl; };

感谢@molbdnilo的帮助。

最新更新