Автор
|
Тема: Явная загрузка DLL
|
Nicholas |
опубликован 29-04-2001 21:04 MSK
Народ, кто может кинуть примерчик или дать ссылку, где можно почитать про загрузку DLL Для Visual C++.На LRESULT CALLBACK *pBD(int,WPARAM,LPARAM); MSG msg; //---------------- hLib=LoadLibrary("simp.dll"); if(hLib) { pBD=GetProcAddress(hLib,"BD"); пишет : left-side modifier' : cannot modify pointers to data
|
rivitna
|
опубликован 30-04-2001 08:59 MSK
Все делаешь правильно, только надо привести указатели к одному типу: typedef LRESULT (CALLBACK *PFNBD)(int, WPARAM, LPARAM);
MSG msg; PFNBD pBD; //---------------- hLib=LoadLibrary("simp.dll"); if(hLib) { pBD=(PFNBD)GetProcAddress(hLib,"BD"); Перед использованием pBD, убедись, что pBD != NULL.
Я думаю, теперь все будет работать. Успехов!
|
Nicholas
|
опубликован 01-05-2001 22:14 MSK
Спасибо, rivitna. Сработало - ошибки больше не выдает. Но и ничего функция не делает. Например, LRESULT CALLBACK BD(int nCode, WPARAM wParam, LPARAM lParam) { MessageBeep(-1); MessageBeep(-1); MessageBeep(-1); MessageBeep(-1); return 0; } длжна пищать, а она не пищит :) В чем дело? |
Kosha
|
опубликован 02-05-2001 03:55 MSK
а дебагом? ;-))) |
rivitna
|
опубликован 02-05-2001 12:13 MSK
Я бы тоже отладчиком посмотрел...Может, неправильно функцию в simp.dll импортируешь, посмотри внимательней |
Nicholas
|
опубликован 02-05-2001 18:09 MSK
Заработало! Я неправильно экспортировал функцию. :) Дело в том, что я разбирался с загрузкой функции по примеру, а там было extern "C" __declspec(dllexport) LRESULT CALLBACK BD(int, WPARAM, LPARAM);Я убрал LRESULT и CALLBACK - и все заработало. Правда, до конца, так и не понял, что они делают. Кто-нибдь сможет объяснить, если не лень будет? ;) |