/* ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΡΠ΅Π½ Π»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ 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;
}
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Asc2Un
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Ρ Π΄Π²ΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL, ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° _declspec(dllexport) Π΄Π»Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ DLL Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Π² ΡΡΠ½ΠΊΡΠΈΠΈ LoadLibraryEx ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΎΠΏΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΠΎΠ΄Π°Π²ΠΈΡΡ Π²ΡΠ·ΠΎΠ² ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ²Π½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ (ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΠΆΠ΅ ΡΠ²Π½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ DLL ΡΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ LoadLibrary, LoadLibraryEx ΠΈ FreeLibrary.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ (Π³Π»Π°Π²Π° 7) ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π’ΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ DllMain, ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π½ΠΈΠΆΠ΅, ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Π³Π»Π°Π²Π΅ 12 (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° 12.4), Π³Π΄Π΅ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠ±Π»Π°ΡΡΡΠΌΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² (Thread Local Storage, SLT) Π² DLL Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ.
BOOL DllMain(HINSTANCE hDll, DWORD Reason, LPVOID Reserved)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ hDll ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° DLL, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ LoadLibrary. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ NULL ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Reserved ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Load-Library; ΠΈΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Reserved ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ FreeLibrary.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Reason ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: DLL_PROCESS_ATTACH, DLL_THREAD_ATTACH, DLL_THREAD_DETACH ΠΈ DLL_PROCESS_DETACH. Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° DLL ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ switch ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ TRUE.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Ρ DllMain ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ (ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ Π² Π³Π»Π°Π²Π΅ 7). ΠΡΠ° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΡΡΠΌΠ° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ DllMain, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡΡΡ Π΄ΠΎ ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. ΠΠΎ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅ Π²Π½ΡΡΡΠΈ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (ΡΠΌ. Π³Π»Π°Π²Ρ 8), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΡΠΊΡ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° DLL ΡΡΠ½ΠΊΡΠΈΠΈ LoadLibrary ΠΈ LoadLibraryEx, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΡΠΎΡΠ΅ΠΊ Π²Ρ ΠΎΠ΄Π° DLL.
Π€ΡΠ½ΠΊΡΠΈΡ DisableThreadLibraryCalls ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ DLL ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ°ΠΏΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΡΠΌΠΈ DLL
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ DLL ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ, ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π·Π° ΡΡΠ΅Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π΄ΡΡΠ². ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ DLL Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ Π²Π΅ΡΡΠΈΠΉ, ΡΡΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
β’ Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ .lib-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² ΡΠ²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅.
β’ ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ½ΡΠΌ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ.
β’ ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ DLL, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠ»ΡΡΠ°Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Ρ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ DLL.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ DLL, Π½ΠΎΡΡΡΠΈΠ΅ ΠΆΠ°ΡΠ³ΠΎΠ½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ "ΠΊΠΎΡΠΌΠ°ΡΠ° DLL", Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠΎΠ»Ρ ΠΎΡΡΡΡΠΌΠΈ, Π΅ΡΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡΠΈΡ DLL. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
β’ ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ DLL Π² ΠΈΠΌΠ΅Π½Π°Ρ .DLLβ ΠΈ .LIB-ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ±ΡΡΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΈΠΊΡΠ°. Π’Π°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π½ΠΎΠΌΠ΅ΡΡ Π²Π΅ΡΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ Utility_3_0.LIB ΠΈ Utility_3_0.DLL. ΠΡΠΈΠΌΠ΅Π½ΡΡ ΡΠ²Π½ΠΎΠ΅ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π²Π΅ΡΡΠΈΡΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ UNIX-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
β’ ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Microsoft Π²Π²Π΅Π»Π° ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ DLL (side-by-side DLL), ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΠΎΠΊ (assemblies) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (components). ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ XML, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ DLL. Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft, Π² ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
β’ ΠΠ»Π°ΡΡΠΎΡΠΌΠ° .NET Framework ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ DLL.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ· ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅ΡΠΎΠ² Π²Π΅ΡΡΠΈΠΉ Π² ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ². Π‘ ΡΠ΅Π»ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ DLL, Π²ΠΎ Π²ΡΠ΅Ρ DLL ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ DllGetVersion. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Microsoft ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²Π΅ΡΡΠΈΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π£ΠΊΠ°Π·Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ:
HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi )
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ DLL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ DLLVERSIONINFO, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠΌΠ΅ΡΡΡΡ ΠΏΠΎΠ»Ρ ΡΠΈΠΏΠ° DWORD Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² cbSize (ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ), dwMajorVersion, dwMinorVersion, dwBuildNumber ΠΈ dwPlatformID. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎΠ»Π΅, dwPlatformID, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ DLLVER_PLATFORM_NT, Π΅ΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows 9x, ΠΈΠ»ΠΈ DLLVER_PLATFORM_WINDOWS, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. Π ΠΏΠΎΠ»Π΅ cbSize Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ sizeof (DLLVERSIONINFO). Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NOERROR. Π€ΡΠ½ΠΊΡΠΈΡ DllGetVersion ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Utility_3_0.
Π Π΅Π·ΡΠΌΠ΅
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Windows ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
β’ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² Windows, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ.
β’ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΊΡΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠ΄ΠΎΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡΡΠΈ.
β’ ΠΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² UNIX, Π½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π‘, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΡΡΠ΅ΠΉ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΠΌΠΎΠΌ Π·Π° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΌΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π.
β’ DLL ΡΠ²Π»ΡΡΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠ²Π½ΡΠΌ, Π»ΠΈΠ±ΠΎ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. DLL, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ
ΠΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΠΎΠ±Π·ΠΎΡ Π·Π°Π΄Π°Ρ, ΡΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ½Π°ΡΠ°Π»Π° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (Π³Π»Π°Π²Π° 6), Π° Π·Π°ΡΠ΅ΠΌ β ΠΏΠΎΡΠΎΠΊΠΎΠ² (Π³Π»Π°Π²Π° 7). Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π³Π»Π°Π²Π°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ .