我有一個關於庫鏈接和.lib文件的問題...爲什麼某些DLL文件需要額外的.lib文件進行鏈接?
這是上下文:
- OS =的Windows
- IDE = QT
我創建了一個DLL:MyLib.dll。
要使用該庫在我的Qt項目,我只需要包括包括路徑,鏈接庫,並使用頭文件:
LIBS += "C:\myPath\MyLib.dll"
INCLUDEPATH += "C:\myPath"
HEADERS += \
../myPath/MyLib_global.h \
../myPath/mylib.h
我用我的項目第三方DLL:第三.DLL
如果我做的一樣,在上面的例子中,這是行不通的:
LIBS += "C:\myPath\third.dll"
第三方DLL自帶的.lib文件「third.lib」,這顯然是我需要同時使用與DLL。
這是爲什麼?爲什麼某些DLL庫需要.lib文件,但其他DLL庫不需要?
難道是.lib是一個訪問DLL的靜態庫嗎?
非常感謝!
謝謝@ Merlin069爲您解答。澄清它!有一件事:當我創建myLib.dll時,我沒有看到用DLL文件生成lib文件的任何方法。那是在構建DLL時的選項嗎?此外,我的DLL中的所有函數調用似乎都可以在沒有lib文件的情況下訪問。那不是.lib文件應該允許的?謝謝 – WewillSee
默認情況下應該有一個導入庫。 – ExpatEgghead
如果IDE文件尚未生成lib文件,那麼IDE中可能會有一個設置。據我瞭解,如果沒有lib文件,你可以單獨加載dll並調用函數,但是如果你想用靜態庫構建一個可執行文件,lib是必需的。 – TheDarkKnight