![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| LifeInAir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Приветствую!
Помогите, пожалуйста, решить проблему! Хочу из 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 |
|
|||
|
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
скорее всего тут косяк со объявлениями функции KeyboardHook... или в ДЛЛ или в проге, или и там и там... Как-то подозрительно выглядит О_о
Убери __stdcall из строки
потому что CALLBACK это и есть уже стдкалл -------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
| LifeInAir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Убрала, но он все равно ругается, типа не должно быть после LRESULT ничего. Пробовала везде ставить вместо CALLBACK __stdcall и наоборот - не помогает! Не может он получить указатель на ф-цию! Пробовала так
тоже не помогает... В тоже время, если обычную ф-цию вызывать из DLL (т.е. без CALLBACK) - все работает. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |