簡體   English   中英

在普通 C++ 中創建一個 Objective-C 塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM