Georgy |
Отправлено: 21.05.2004, 14:49 |
|
Не зарегистрирован
|
Доброго всем времени суток. Дело вот в чём : сделал dll`ку с одной экспортируемой функцией (KeyboardProc если быть точным) с модификатором CALLBACK.
Из приложения загружаю библиотеку и нахожу эту функцию — всё нормально, и ставлю HOOK. Но это всё только в C-Builder работает.
В Visual C++ приходится экспортируемую функцию в dll объявлять с модификатором _cdecl, с CALLBACK или __stdcall не получается в том смысле, что её невозможно вызвать, а точнее после такого выражения
HOOKPROC KeyboardProc=(HOOKPROC)GetProcAddress(lib, "KeyboardProc");
переменная KeyboardProc равна NULL.
Хотя если в dll вместо CALLBACK поставить _cdecl всё работает.
Почему так происходит? |
|
** klen |
Отправлено: 22.05.2004, 10:48 |
|
Не зарегистрирован
|
Это обычно бывает от того что компилятор символы экспортируемые "манглит", и от модификатора в обьявлении функции это зависит. Посмотрите как на самом деле уже в слинкованом модуле dll она выгдядит(имя функции). |
|
Georgy |
Отправлено: 22.05.2004, 19:47 |
|
Не зарегистрирован
|
Имя экспортируемой функции без каких-либо символов типа @, ? или т.п. Т.е. KeyboardProc. |
|
** klen |
Отправлено: 23.05.2004, 00:27 |
|
Не зарегистрирован
|
а ты тут дллку выложи а попробую ее адрес вытащить, если получится — задача решена. а воще феномен прям, пациента надо смотреть , так ничего сказать нельзя опаределенно |
|
Georgy |
Отправлено: 23.05.2004, 14:17 |
|
Не зарегистрирован
|
Понятия не имею как выложить dll сюда. klen, в IRC не бываешь? Может там пообщаться? |
|