Mam pytanie o łączenie i plików .lib biblioteki ...Dlaczego niektóre pliki DLL wymagają dodatkowego pliku .lib do połączenia?
to jest kontekst:
- OS = Okna
- IDE = QT
Stworzyłem DLL: MyLib.dll.
Aby korzystać z tej biblioteki w moim projekcie QT, tylko muszą zawierać zawierać ścieżkę, link do biblioteki i korzystać z plików nagłówka:
LIBS += "C:\myPath\MyLib.dll"
INCLUDEPATH += "C:\myPath"
HEADERS += \
../myPath/MyLib_global.h \
../myPath/mylib.h
używam trzeciej dll partia w moim projekcie: trzeci .dll
Jeśli będę taka sama, jak w powyższym przykładzie, to nie działa:
LIBS += "C:\myPath\third.dll"
trzecia partia DLL pochodzi z pliku lib „third.lib”, które podobno trzeba używać razem z biblioteką DLL.
Dlaczego tak jest? Dlaczego niektóre biblioteki DLL wymagają pliku .lib, ale inne biblioteki DLL tego nie robią?
Czy to możliwe, że biblioteka .lib jest biblioteką statyczną z dostępem do biblioteki DLL?
Wielkie dzięki!
dzięki @ Merlin069 za odpowiedź. to wyjaśnia! Jedna rzecz: kiedy stworzyłem plik myLib.dll, nie widziałem żadnego sposobu na wygenerowanie pliku lib z plikiem DLL. czy jest to opcja przy budowaniu biblioteki DLL? Ponadto, wszystkie wywołania funkcji w mojej bibliotece DLL wydają się być dostępne również bez pliku lib. Czy nie jest to tym, na co powinien zezwolić plik .lib? dzięki – WewillSee
Domyślnie powinna istnieć biblioteka importu. – ExpatEgghead
Prawdopodobnie w twoim IDE będzie ustawienie do utworzenia pliku lib, jeśli jeszcze go nie ma. O ile rozumiem, bez pliku lib, możesz załadować dll osobno i wywoływać funkcje, ale lib jest wymagana, jeśli chcesz zbudować plik wykonywalny z bibliotekami statycznymi. – TheDarkKnight