2013-05-19 15 views
5

Widziałem w bibliotekach sterowników te trzy pliki. W jaki sposób powiązane są trzy pliki, jaka jest kolejność kompilacji plików i jaka jest zawartość każdego pliku? Oprócz tego widziałem również .a pliki są takie same jak .lib?W jaki sposób są powiązane pliki Header (.h), plik biblioteki (.lib) i DLL (.dll)

+0

Twój kod zawiera nagłówki .h i pliki źródłowe (.c/.cpp). Nagłówki są fragmentami kodu, które są kopiowane/wklejane za każdym razem, gdy # dołączasz je do pliku źródłowego. Po skompilowaniu kodu kompilator wyprowadza pliki źródłowe jako pliki obiektowe (.o lub .obj). Plik .lib to po prostu archiwum zawierające wszystkie pliki obiektów. Biblioteka DLL to skompilowany kod, który zawiera kilka wyeksportowanych funkcji, które można ponownie wykorzystać w kodzie. Plik .exe jest skompilowanym kodem, który wywołuje funkcję main() podczas uruchamiania. –

Odpowiedz

4

lib i plików .dll są oba pojemniki wykonywalnych biblioteki Windows (.o lub .obj) plików z dawnych (lib) zawierających rzeczy (funkcje, definicje, etc), które trzeba link statycznie do pliku wykonywalnego twojego projektu. Ten ostatni (.dll) jest już obecny w twoim systemie lub umieścisz go w swoim systemie i jest dynamicznie połączony z plikiem wykonywalnym twojego projektu.

W systemach Unix/Linux rozszerzenia plików to odpowiednio .a i .so (czyli .a zamiast .lib i .so zamiast .dll).

We wszystkich przypadkach, podczas kompilowania projektu trzeba #include jeden lub więcej .h pliki dostarczone przez biblioteki używasz (nazywane są pliki nagłówkowe), bo to gdzie rzeczy wewnątrz plików wykonywalnych biblioteki zostaną zdefiniowane.

EDIT

Główną zaletą statycznie połączonej biblioteki jest to, że jest samowystarczalny (bez zależności zewnętrzne), ale zwiększa rozmiar swojego pliku wykonywalnego. Główną wadą jest to, że przyszłe wersje muszą zostać ponownie skompilowane i ponownie rozprowadzone.

Dla dynamicznie powiązanych bibliotek, ponownie dystrybuujemy tylko zaktualizowane pliki wykonywalne biblioteki. Główną wadą jest to, że nasz program polega na tym, że biblioteka jest już zainstalowana w systemie klienta.

+0

Należy zauważyć, że istnieje również coś, co nazywa się "Import biblioteki" sprawdź http://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details –

Powiązane problemy