Создать блок Objective- C в простом C ++ - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу создать CGDisplayStream с функцией CGDisplayStreamCreateWithDispatchQueue c, которая ожидает CGDisplayStreamFrameAvailableHandler в качестве параметра. CGDisplayStreamFrameAvailableHandler - это объективный блок c. Я пытался использовать C ++ лямбда, но это не работает:

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

Я нашел: Objective- C Блоки в C, но на самом деле это не так справка, так как они не объяснили, что необходимо для создания объективного блока c в обычном c или c ++.

Как создать действительный объект, который я могу передать в CGDisplayStreamCreateWithDispatchQueue?

1 Ответ

0 голосов
/ 26 апреля 2020

Это сработало для меня:

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

Спасибо @molbdnilo за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...