Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LRESULT CALLBACK, Синтакситческая ошибка в прототипе 
:(
    Опции темы
LifeInAir
Дата 4.7.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 : '('
 Остальной механизм работает нормально. Что с этим делать? smile 

Спасибо.

PM MAIL   Вверх
WERITAS
Дата 4.7.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



скорее всего тут косяк со объявлениями функции KeyboardHook... или в ДЛЛ или в проге, или и там и там... Как-то подозрительно выглядит О_о

Убери  __stdcall из строки 
Код

typedef LRESULT CALLBACK  (__stdcall *PKEYBHOOK)(int,WPARAM,LPARAM);


потому что CALLBACK это и есть уже стдкалл



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
LifeInAir
Дата 5.7.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 4.7.2007

Репутация: нет
Всего: нет



Цитата(WERITAS @  4.7.2007,  16:41 Найти цитируемый пост)

Убери  __stdcall из строки 

Убрала, но он все равно ругается, типа не должно быть после LRESULT ничего. Пробовала везде ставить вместо CALLBACK __stdcall и наоборот - не помогает! Не может он получить указатель на ф-цию! 
Пробовала так 
Код

typedef LRESULT (CALLBACK *PKEYBHOOK)(int,WPARAM,LPARAM);

 тоже не помогает... 
В тоже время, если обычную ф-цию вызывать из DLL (т.е. без CALLBACK) -  все работает. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.