Re: DLL/lib загрузка/выгрузка
От: frozen83 Россия не покажу
Дата: 29.11.04 10:04
Оценка:
Здравствуйте, bel_nikita, Вы писали:

_>Скомпилил ДЛЛ и Либу:

_>LaserScanner.cpp
_>
_>BOOL APIENTRY DllMain( HANDLE hModule, 
_>                       DWORD  ul_reason_for_call, 
_>                       LPVOID lpReserved
_>                     )
_>{
_>    switch (ul_reason_for_call)
_>    {
_>        case DLL_PROCESS_ATTACH:
_>      //MessageBox(GetFocus(),"asdasdadadasd","3453355",MB_OK);
_>            break;
_>        case DLL_THREAD_ATTACH:
_>            break;
_>        case DLL_THREAD_DETACH:
_>            break;
_>        case DLL_PROCESS_DETACH:
_>      MessageBox(GetFocus(),"Closing Dll","DETACH",MB_OK);
_>            break;
_>    }
_>    return TRUE;
_>}
_>

_>В аппликации делаю следующие:
_>
_>#include ".\LaserScanner\LaserScanner.h"
_>#ifdef _DEBUG
_>  #pragma comment(lib,".\\LaserScanner\\Debug\\LaserScanner.lib")
_>#else
_>  #pragma comment(lib,".\\LaserScanner\\Release\\LaserScanner.lib")
_>#endif
_>...
_>LaserScannerSomeFunction(TRA_LA_LA);
_>...
_>

_>Итересует в какой момент происходит загрузка ДЛЛ и выгрузка?
_>Если загрузка работает, т.е. ДЛЛ загружается и LaserScannerSomeFunction выполняется, то вот с выгрузкой проблемы . MessageBox — никогда не выкидывается. Как произвести выгрузку ДЛЛ?

_>З.Ы.: или вообще чушь порю?



Если я не ошибаюсь, то когда ты подключаешь dll таким образом (через lib файл) то загрузка происходит перед( ) запуском программы, а выгрузка после её завершения (наверное как мусор чистится). Если желаешь их выгружать попробуй писать:

HMODULE LoadLibrary(
LPCTSTR lpFileName
);

и

FARPROC GetProcAddress(
HMODULE hModule,
LPCSTR lpProcName
);

и

BOOL FreeLibrary(
HMODULE hModule
);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.