Zasadniczo to, co robisz, to ustawienie odpowiedniej biblioteki DLL w sekcji opóźnienia ładowania. Wtedy nie załaduje tej biblioteki DLL, dopóki nie wykonasz wywołania funkcji, która jest w tej bibliotece DLL.
Visual C++ Linker obsługuje teraz opóźnione ładowanie DLL. Ten zwalnia Cię z konieczności korzystania z funkcji Windows SDK LoadLibrary i GetProcAddress do implementacji opóźnionego ładowania DLL.
Przed Visual C++ 6.0, jedynym sposobem na załadowanie biblioteki DLL w czasie wykonywania była za pomocą LoadLibrary i GetProcAddress; system operacyjny ładowałby bibliotekę DLL, gdy plik wykonywalny lub biblioteka DLL, która go używała, została załadowana.
Począwszy od Visual C++ 6.0, gdy linkowanie statyczne z biblioteką DLL, linker udostępnia opcje opóźnienia ładowania biblioteki DLL, aż program wywoła funkcję w tej bibliotece DLL.
Aplikacja może opóźnić ładowanie biblioteki DLL za pomocą opcji łącznika /DELAYLOAD (Delay Load Import) z funkcją pomocniczą (domyślna implementacja dostarczona przez Visual C++). Funkcja pomocnika załaduje bibliotekę DLL w czasie wykonywania , wywołując funkcję LoadLibrary i GetProcAddress.
Należy rozważyć opóźnienie ładowania DLL jeżeli:
Twój program może nie wywołać funkcję w DLL.
funkcji w DLL nie może uzyskać wywołana do późnych Twojego programu wykonania.
Opóźnione ładowanie biblioteki DLL można określić podczas kompilacji jako projekt .EXE lub .DLL. Projekt .DLL, który opóźnia ładowanie jednej lub więcej bibliotek DLL, nie powinien sam wywoływać opóźnionego załadowania punktu wejścia w Dllmain.
Pytasz jak działa opóźnienia załadunku, lub w jaki sposób można je stosować? – xtofl