У меня есть 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?