Функция члена класса как обратный вызов импортированной dll - PullRequest
1 голос
/ 28 мая 2020

У меня есть dll, которая экспортировала следующие функции. Одна из этих функций - это определение функции обратного вызова, а другая - функция для установки обратного вызова.

typedef void __stdcall RawStreamingCallback (RawData const *);

void __stdcall OpenRawStreaming (int TunerId, RawStreamingCallback *pCallback);

Я хочу установить функцию-член класса как функцию обратного вызова. Это мое собственное определение класса:

public class XX {
public:
    XX() {}


    void CALLBACK RawStreamingCallbackkk(RawData const *data) {}

    bool startStreamingCallback(int tunerId) {
        RawStreamingCallback* p = (RawStreamingCallback *)(this->RawStreamingCallbackkk);

        OpenRawStreaming(tunerId, p);
    }
};

Когда я создаю код, он выдает следующую ошибку:

type cast: невозможно преобразовать из 'overloaded-function' to 'RawStreamingCallback (__cdecl *)'

Если я объявлю свою функцию обратного вызова как stati c, она будет запущена. Но мне нужно использовать функцию-член класса X. Потому что будет список объектов класса XX, и я должен знать, какой обратный вызов для какого объекта.

Можно ли использовать функцию-член класса в качестве функции обратного вызова для импортированных dll?

...