2010-01-30 15 views
6

Niedawno natrafiłem na bibliotekę DLL zainstalowaną w moim systemie, która mówi, że Dependancy Walker (i każde inne narzędzie, które próbowałem) ma zerowy eksport według nazwy lub liczby porządkowej, ale plik ma rozmiar około 4mb. Myślałem, że jedynym celem DLL jest eksportowanie funkcji do użycia przez inny kod, więc jaki byłby cel dll bez widocznego eksportu?W jaki sposób biblioteka DLL może eksportować zero?

Odpowiedz

4

Jednym ze sposobów myślenia o DLL jest pojemnik funkcji. Eksportowanie funkcji z biblioteki DLL powoduje, że funkcje te są widoczne dla osób dzwoniących spoza biblioteki DLL. Podczas eksportowania funkcji z biblioteki DLL jest prawdopodobnie najczęstszym sposobem zapewnienia dostępu do nich, wiele platform zapewnia inne sposoby dostępu do funkcji, które nie zostały wyeksportowane, takie jak odbicie w .NET Framework i Java oraz (jak sądzę) LoadLibtary/GetProcAddress w Win32

powody tego są zróżnicowane, często dlatego, że jest korzystna dla dewelopera mieć funkcje w bibliotece, ale niepożądane te funkcje mają być wywoływane z aplikacji zewnętrznych

+0

To ma sens. Nigdy nie zdałem sobie sprawy (lub nawet nie pomyślałem), że mogą istnieć sposoby użycia biblioteki DLL innej niż za pomocą tabeli eksportu, jeśli ją napisałeś. –

3

zasobów tylko DLL, może być? Są one używane dość często do celów lokalizacyjnych, na przykład.

EDYCJA: możliwe jest również posiadanie biblioteki DLL z kodem, który robi coś w DllMain(), aby jakoś udostępnić jej funkcjonalność. Biblioteka DLL może się zarejestrować na przykład w jakimś globalnym module rozsyłającym lub utworzyć obiekty nazwane jądra ...

Powiązane problemy