在普通C ++中创建一个Objective-C块

问题描述 投票:0回答:1

我想用CGDisplayStream c函数创建一个CGDisplayStreamCreateWithDispatchQueue,该函数需要CGDisplayStreamFrameAvailableHandler作为参数。CGDisplayStreamFrameAvailableHandler是Objective-C区块。我尝试使用C ++ Lambda,但这不起作用:

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

我发现:Objective-C Blocks in C但这并没有真正的帮助,因为他们没有解释在纯C或C ++中创建Objective-C块所需的条件。

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

c++ c objective-c core-graphics quartz-2d
1个回答
0
投票

这对我有用:

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

感谢@molbdnilo的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.