#programowanie #cpp wyjaśnijcie debila into linkowanie w C++ 1. dlaczego jak mam bibliotekę .dll to muszę zalinkować i .dll i .lib żeby z niej korzystać? Co jest w jednym a co w drugim? 2. dlaczego muszę jednocześnie includować pliki nagłówkowe i linkować binarki bibliotek?
Bo pliki nagłówkowe mówią tylko, że funkcja z takimi argumentami gdzieś będzie, a binarki ją zawierają. Co do dll i lib to się nie znam. pisze pod Linuxem.
1. dlaczego jak mam bibliotekę .dll to muszę zalinkować i .dll i .lib żeby z niej korzystać? Co jest w jednym a co w drugim?
Jak linkujesz statycznie czyli lib, to biblioteka jest wbudowywana w exeka programu. Jak linkujesz dynamicznie to bliblioteka nie siedzi w exeku tylko czytana jest z dllki. Po co w takim razie statyczna biblioteka podczas kompilacji? Tu już by trzeba było wniknąć w to jak działa
@onionomous: Dlaczego potrzebjesz oprócz dll pliku lib? bo taki system sobie wymyślił M$, że system nie będzie miał dynamicznego linkera a w bibliotekach statycznych VC generuje sobie kod do linkowania z bibliotekami dll. BIlioteki dll da się używać bez plików lib, ale sam musisz sobie napisać kod który wczyta symbol z biblioteki dll. Pod linuxem gdzie linker jest w systemie nie potrzebujesz nic poza bibliotekami dynamicznymi .so
1. dlaczego jak mam bibliotekę .dll to muszę zalinkować i .dll i .lib żeby z niej korzystać? Co jest w jednym a co w drugim?
2. dlaczego muszę jednocześnie includować pliki nagłówkowe i linkować binarki bibliotek?
Co do dll i lib to się nie znam. pisze pod Linuxem.
Jak linkujesz statycznie czyli lib, to biblioteka jest wbudowywana w exeka programu. Jak linkujesz dynamicznie to bliblioteka nie siedzi w exeku tylko czytana jest z dllki. Po co w takim razie statyczna biblioteka podczas kompilacji? Tu już by trzeba było wniknąć w to jak działa
Dlaczego potrzebjesz oprócz dll pliku lib? bo taki system sobie wymyślił M$, że system nie będzie miał dynamicznego linkera a w bibliotekach statycznych VC generuje sobie kod do linkowania z bibliotekami dll. BIlioteki dll da się używać bez plików lib, ale sam musisz sobie napisać kod który wczyta symbol z biblioteki dll. Pod linuxem gdzie linker jest w systemie nie potrzebujesz nic poza bibliotekami dynamicznymi .so