, (run-time linking), , , DLL. . ; . . : LoadLibrary ( LoadLibraryEx), GetProcAddress FreeLibrary. 16- (far) .
: LoadLibrary LoadLibraryEx.
HINSTANCE LoadLibrary(LPCTSTR lpLibFileName)
HINSTANCE LoadLibraryEx(LPCTSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
( HINSTANCE, HANDLE) NULL. .DLL . LoadLibrary .-. (\); (/) .
DLL , DLL ( ), . LoadLibrary .DLL-, DLL DLL, .
LoadLibraryEx LoadLibrary, , . hFile . dwFlags :
1. LOAD_WITH_ALTERED_SEARCH_PATH: , . , , , lpLibFileName.
2. LOAD_LIBRARY_AS_DATAFILE: - , DllMain (. " DLL" ).
3. DONT_RESOLVE_DLL_REFERENCE: DllMain ; , DLL, .
DLL , , , . DLL , , .
|
|
BOOL FreeLibrary(HINSTANCE hLibModule)
, , , GetProcAddress.
FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
hModule, (HINSTANCE HMODULE), (instance) , LoadLibrary GetModuleHandle (. ). lpProcName , ; Unicode. NULL. FARPROC, " ", .
, hHandle, GetModuleFileName. : (.DLL .EXE) GetModuleHandle , , .
, .
:
2.4, ASCII Unicode, Asc2Un ( 2.5), /. 5.3 (Asc2UnMM) , . , Asc2UnMM , ; , NTFS, .
5.7 , , , . DLL, Asc2Un . , . , , , , , DLL, , . 5.9 , DLL . , FARPROC , , .
5.7. atouEL:
/* 5. atou, . */
#include "EvryThng.h"
int _tmain(int argc, LPTSTR argv[]) {
/* Asc2Un . */
BOOL (*Asc2Un)(LPCTSTR, LPCTSTR, BOOL);
DWORD LocFileIn, LocFileOut, LocDLL, DashI;
|
|
HINSTANCE hDLL;
FARPROC pA2U;
LocFileIn = Options(argc, argv, _T("i"), &DashI, NULL);
LocFileOut = LocFileIn + 1;
LocDLL = LocFileOut + 1;
/* , DashI. */
/* ASCII Unicode. */
hDLL = LoadLibrary(argv[LocDLL]);
if (hDLL == NULL) ReportError(_T("He DLL."), 1, TRUE);
/* . */
pA2U = GetProcAddress(hDLL, "Asc2Un");
if (pA2U == NULL) ReportError(_T("He ."), 2, TRUE);
/* . typedef. */
Asc2Un = (BOOL(*)(LPCTSTR, LPCTSTR, BOOL))pA2U;
/* . */
Asc2Un(argv[LocFileIn], argv[LocFileOut], FALSE);
FreeLibrary(hDLL);
return 0;
}