Вызов функции обратного вызова из разных cpp вызывает bad_function_call - PullRequest
0 голосов
/ 01 февраля 2020

В настоящее время я работаю над проектом OpenCV, в котором я хочу вызвать функцию обратного вызова в main. cpp из другого cpp.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я хочу вызвать Функция Я получаю bad_function_call, потому что функция обратного вызова является нулевым.

Мой главный. cpp выглядит следующим образом:

 PointDetection *detect;
 detect->houghCallback = [hPublisher] (std::vector<cv::Vec4i> data) {
        //do something
 };

my PointDetector.hpp, который включается в PointDetector. cpp:

 std::function <void (std::vector<cv::Vec4i> data) houghCallback;

Мой PointDetector. cpp, где я вызываю функцию, выглядит следующим образом:

 void PointDetector::houghDetectCb(int status, void *userData) {
        std::vector<cv::Vec4i> houghPointsResult;
        PointDetector *self = static_cast<PointDetector *>(userData);    //This includes every variable in the hpp except the houghCallback for some reason 
        self->houghCallback(houghPointsResult);                          //This causes the bad_function_call because houghCallback is Null 
 }

Кто-нибудь знает, можно ли вызвать Callback таким образом?

1 Ответ

0 голосов
/ 05 февраля 2020

Я нашел решение: я вызывал stream.enqueqeHostCallback перед фактической операцией GPU (см. Этот вопрос: cuda streams: обратный вызов не вызывается после выполнения потока )

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