![](/img/trans.png)
[英]How to create c++ equivalent of Objective-C completion block as param
[英]Create an Objective-C Block in plain C++
我想用CGDisplayStreamCreateWithDispatchQueue
c function 創建一個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)')
I found: Objective-C Blocks in C but this doesnt really help, since they didnt explain what is needed to create an objective-c block in plain c or c++.
如何創建可以傳遞給 CGDisplayStreamCreateWithDispatchQueue 的有效 object?
這對我有用:
CGDisplayStreamFrameAvailableHandler handler = ^void(CGDisplayStreamFrameStatus status, uint64_t timestamp, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) { std::cout << "Update" << std::endl; };
感謝@molbdnilo 的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.