Не могу найти правильный параметр для _set_se_translator - PullRequest
1 голос
/ 15 апреля 2011

Я пытаюсь реализовать _set_se_translator.Я попытался написать функцию со следующей подписью (из моего файла .cpp - конечно, у меня есть аналогичная подпись в моем файле .h):

 void CIntersonBScan::trans_func(unsigned int u, EXCEPTION_POINTERS* pExp)

Затем я передаю эту функцию в качестве параметра_set_se_translator, написав следующий код:

 _set_se_translator(&CIntersonBScan::trans_func);

Затем я скомпилировал свой код и получил следующее сообщение об ошибке:

error C2664: '_set_se_translator': не удалось преобразовать параметр 1 из 'void (__ thiscall)CIntersonBScan :: *) (без знака int, EXCEPTION_POINTERS *) 'в' _se_translator_function '

В файле eh.h я нашел следующее определение для _se_translator_function:

 typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);

Я пытался варьироватьподпись trans_func и все равно получил то же сообщение об ошибке.Я уже установил параметр компиляции / EHa.Как создать функцию, которая на самом деле соответствовала бы сигнатуре _se_translator_function?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Это должна быть отдельно стоящая функция, а не функция-член.Вот почему типы не совпадают.

2 голосов
/ 15 апреля 2011
typedef void (__cdecl *_se_translator_function)(unsigned int, struct _EXCEPTION_POINTERS*);

Это должна быть свободная функция или статическая функция-член - она ​​не может быть нестатической функцией-членом (поскольку они имеют скрытый неявный параметр this - и не могут соответствовать _se_translator_function).

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