Аргумент типа «void (Biometria :: *) (char * idSensor, событие GRCAP_FINGER_EVENTS)» несовместим с параметром типа «GRCAP_STATUS_EVENT_PROC *»

0

Мне нужно реализовать некоторые функции обратного вызова из внешней DLL, но я не могу найти способ разместить его внутри моего класса.

Метод DLL:

//CALLBACK functions
typedef void CALLBACK GRCAP_STATUS_EVENT_PROC(char* idSensor, GRCAP_STATUS_EVENTS event);
DLLIMPORT
GrCapInitialize(GRCAP_STATUS_EVENT_PROC *StatusEventHandler);

Мои занятия:

Class Biometria {
public
void StatusEventHandler(char* idSensor, GRCAP_STATUS_EVENTS event);
}

// Consumes data from a status event.
void Biometria::StatusEventHandler(char* idSensor, GRCAP_STATUS_EVENTS event) {
    // Signaling that a status event occurred.
    if (event == GR_PLUG) {
        // Start capturing from plugged sensor.
        GrCapStartCapture(idSensor, myFingerCallBack, myImageCallBack);
    }
    else if (event == GR_UNPLUG) {
        // Stop capturing from unplugged sensor
        GrCapStopCapture(idSensor);
    }
}

Точка, в которой я получаю ошибку:

int Biometria::Initialize() {
    //some code
    return GrCapInitialize(&Biometria::StatusEventHandler);
}

Я уже пробовал статический метод без успеха.

  • 0
    Вы не можете использовать указатель на функцию-член для C-подобных функций обратного вызова. Статическая функция-член должна работать, хотя.
  • 0
    melak47, когда я устанавливаю свой метод в static, я получаю эту ошибку: класс хранения не может быть указан здесь
Показать ещё 3 комментария
Теги:
dll
wrapper
dllimport

1 ответ

0

Решено после изменения объявления метода:

static GRCAP_STATUS_EVENT_PROC StatusEventHandler;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню