W środowisku Windows,Dlaczego funkcja Implicit DLL Linking wymaga odpowiedniego pliku Lib, ale nie ma linku do funkcji Explicit Linking?
Kiedy próbowałem połączyć DLL do mojego programu Jawnie (przy użyciu LoadLibrary)
- Najpierw trzeba określić wskaźników funkcji zgodnie z każdego podpisu funkcji wewnątrz biblioteka DLL.
- Następnie uzyskaj adresy funkcji za pomocą "GetProcAddress" i przypisz je do tych wskaźników.
Kiedy próbowałem połączyć DLL do mojego programu Pośrednio (za pomocą pliku nagłówka)
- Najpierw trzeba odpowiedni plik nagłówka, aby uzyskać podpisy funkcyjnych.
Następnie potrzebny jest odpowiedni plik
Lib
wygenerowany przy użyciu biblioteki DLL.Moje pytania są
- Dlaczego implicite łącząc potrzebny plik
Lib
jak również? - Jakie informacje są potrzebne do pobrania z pliku "Lib", którego nie można uzyskać z poziomu
DLL
lubHeader file
? - Jeśli jest coś na pytanie 2, w jaki sposób informacje są pobierane podczas jawnego wczytywania?
- Dlaczego implicite łącząc potrzebny plik
Już poszedł koryta this pytanie. Ale nie potrafię zrozumieć żadnego godnego powodu. Czy ktoś mógłby pomóc ci to wyjaśnić w prosty sposób? Dziękuję Ci.
Nie chodzi o pobieranie danych, które * nie mogły * pochodzić z biblioteki DLL. To bardziej optymalizacja - formatowanie danych tak, aby życie było jak najprostsze dla linkera, aby zminimalizować specjalną obudowę między łączeniem z bibliotekami statycznymi a dynamicznymi. –
@Jerry: Jakie informacje przekazuje Lib w celu optymalizacji. Czy pomaga zmniejszyć czas łączenia? Dlaczego te informacje nie mogą osadzić biblioteki DLL? Dlaczego więc wywołać 'DLL' niż wywołanie' DLL & LIB'. Dziękuję Ci! –
To głównie kwestia optymalizacji formatu danych - to jest przekształcanie danych dla biblioteki w plik obiektowy formatu COFF, tak jak linker spodziewa się, że zajmie się czymś innym. Ale - możesz stworzyć .lib z biblioteki DLL (lub nawet pliku definicji modułu), więc wynik nie zawiera żadnych informacji, które są nieobecne w bibliotece DLL. –