| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > LRESULT CALLBACK |
| Автор: LifeInAir 4.7.2007, 16:16 |
| Приветствую! Помогите, пожалуйста, решить проблему! Хочу из exe вызвать CALLBACK ф-цию, которая находится в DLL. В DLL: extern "C" __declspec(dllexport) LRESULT CALLBACK KeyboardHook(int,WPARAM,LPARAM); - Прототип Сама ф-ция: LRESULT CALLBACK KeyboardHook(int nCode,WPARAM wParam,LPARAM lParam) { log( "HOOK is run"); return 0; } К exe подключаю .H, в котором: DECLSPEC_IMPORT LRESULT CALLBACK KeyboardHook(int,WPARAM,LPARAM); Вот , что у меня в exe: ... typedef LRESULT CALLBACK (__stdcall *PKEYBHOOK)(int,WPARAM,LPARAM); PKEYBHOOK pKeybHook ; ... hLib=LoadLibrary("hook_dll.dll"); if(hLib) { logs("hook_dll is maped"); int i =0; SetLastError(0); pKeybHook=(PKEYBHOOK) GetProcAddress(hLib, "KeyboardHook"); if (pKeybHook) { logs("Success find pKeybHook"); } else { logs("ERROR find pKeybHook"); } } else logs("hook_dll is not maped - ERROR"); Так вот, exe не компилится, ругается на LRESULT CALLBACK, когда создаю указатель на ф-цию. error C2059: syntax error : '(' Остальной механизм работает нормально. Что с этим делать? Спасибо. |
| Автор: WERITAS 4.7.2007, 16:41 | ||
| скорее всего тут косяк со объявлениями функции KeyboardHook... или в ДЛЛ или в проге, или и там и там... Как-то подозрительно выглядит О_о Убери __stdcall из строки
потому что CALLBACK это и есть уже стдкалл |
| Автор: LifeInAir 5.7.2007, 08:42 | ||
Убрала, но он все равно ругается, типа не должно быть после LRESULT ничего. Пробовала везде ставить вместо CALLBACK __stdcall и наоборот - не помогает! Не может он получить указатель на ф-цию! Пробовала так
тоже не помогает... В тоже время, если обычную ф-цию вызывать из DLL (т.е. без CALLBACK) - все работает. |