Ich habe eine Frage zu Bibliothek Verknüpfung und LIB-Dateien ...Warum benötigen einige DLL-Dateien eine zusätzliche .lib-Datei zum Verknüpfen?
dies ist der Kontext:
- OS = Windows-
- IDE = QT
ich erstellt habe DLL: MyLib.dll.
Um diese Bibliothek in meinem QT-Projekt zu verwenden, muss ich nur ein Pfad enthalten sind, einen Link zu der Bibliothek und verwenden Sie die Header-Dateien:
LIBS += "C:\myPath\MyLib.dll"
INCLUDEPATH += "C:\myPath"
HEADERS += \
../myPath/MyLib_global.h \
../myPath/mylib.h
ich einen Dritten DLL in meinem Projekt bin mit: dritten .dll
Wenn ich die gleichen wie im obigen Beispiel zu tun, funktioniert es nicht:
LIBS += "C:\myPath\third.dll"
der dritte Partei DLL kommt mit einer LIB-Datei „third.lib“, die ich brauche, um scheinbar zusammen zu verwenden mit der DLL.
Warum ist das? Warum benötigen einige DLL-Bibliotheken eine .lib-Datei, andere DLL-Bibliotheken nicht?
Könnte es sein, dass die .lib eine statische Bibliothek ist, die auf die DLL zugreift?
Vielen Dank!
danke @ Merlin069 für Ihre Antwort. das verdeutlicht es! Eine Sache: Als ich myLib.dll erstellte, sah ich keine Möglichkeit, eine lib-Datei mit der DLL-Datei zu erzeugen. ist das eine Option beim Erstellen der DLL? Auch scheinen alle Funktionsaufrufe in meiner DLL ohne die lib-Datei zugänglich zu sein. Ist das nicht, was die .lib-Datei erlauben soll? Danke – WewillSee
Es sollte standardmäßig eine Import-Bibliothek sein. – ExpatEgghead
Es gibt wahrscheinlich eine Einstellung in Ihrer IDE, um die lib-Datei zu erstellen, wenn sie noch keine generiert. Soweit ich es verstehe, können Sie ohne die lib-Datei die DLL separat laden und Funktionen aufrufen, aber die lib ist erforderlich, wenn Sie eine ausführbare Datei mit statischen Bibliotheken erstellen möchten. – TheDarkKnight