我在驅動程序庫中看到這三個文件。這三個文件如何相關,文件的編譯順序和每個文件的內容是什麼?除此之外,我還看到.a文件與.lib相同?頭文件(.h),庫文件(.lib)和DLL(.dll)文件如何相關
5
A
回答
4
.lib和.dll文件都是Windows庫(.o或.obj文件)的可執行文件的容器,前者(.lib)包含東西(函數,定義等),您必須靜態鏈接到項目的可執行文件。後者(.dll)要麼已經存在於系統中,要麼將其放入系統中,並且動態鏈接到項目的可執行文件。
對於Unix/Linux系統,文件擴展名分別爲.a和.so(即.a而不是.lib,而.so而不是.dll)。
在所有情況下,編譯項目時,您必須#include
一個或多個由所使用(他們被稱爲頭文件)庫提供給您的.h文件的,因爲這是可執行文件裏面的東西圖書館的定義。
編輯
靜態鏈接庫的主要優點是,它是獨立的(沒有外部的依賴關係),但它會增加你自己的可執行文件的大小。主要缺點是未來的版本必須重新編譯和重新分發。
對於動態鏈接庫,我們重新分發更新後的庫可執行文件。主要缺點是我們的程序依賴於客戶系統上已安裝的庫。
+0
應該指出的是,還有一些被稱爲「導入庫」的東西http://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details –
相關問題
- 1. 類庫lib和dll文件
- 2. DLL和LIB文件
- 3. .dll,.lib,.h文件有什麼區別?
- 4. 使用包含「.h」,「.lib」和「.dll」文件的第三方庫
- 5. 如何.H,.LIB和.dll文件一起工作
- 6. 如何清理Lib和Dll文件夾
- 7. 將lib +頭文件轉換爲DLL
- 8. 如何從C#DLL創建.lib文件?
- 9. DelayLoading一個DLL和相關的.lib文件
- 10. 使用.h .lib和.dll文件附帶的SDK
- 11. 在Linux中使用.lib和.dll文件
- 12. 拔出從DLL文件/頭文件
- 13. 在visual c中創建頭文件(.h)和.lib文件#
- 14. lib.exe,Visual Studio,從dll和def文件生成.lib文件
- 15. 如何在VC++ 6.0項目中使用DLL而不需要.h和.lib文件?
- 16. 使用.dll文件編譯可執行文件,.dll相對於.exe文件
- 17. .h,.dll和.lib混淆
- 18. DLL項目中的LIB文件生成
- 19. 從lib中導入函數。/dll文件
- 20. 如何將頭文件包含到C++ dll文件中
- 21. 我只有一個沒有.h和.lib文件的dll文件。如何在vC++中使用它?
- 22. 如何修改DLL文件
- 23. 如何比較dll文件
- 24. 如何區分DLL文件
- 25. 如何在VC++中使用.lib,.dll和.exp文件?
- 26. 爲什麼Qt中的插件有.dll和.lib文件?
- 27. 從[dll/lib/def/exp]到c/C++頭文件
- 28. 如何導入.dll文件庫從子文件夾在C#
- 29. 轉換一個的.lib和.h文件,可以在Python中使用的DLL
- 30. 的.h文件包含在頭文件和cpp文件
您的代碼包含頭文件.h和源文件(.c/.cpp)。頭文件是每次將#include包含在源文件中時複製/粘貼的代碼片斷。編譯代碼時,編譯器將源文件輸出爲目標文件(.o或.obj)。 .lib文件只是一個包含所有對象文件的存檔。該DLL庫是一個編譯代碼,它包含一系列可以在代碼中重用的導出函數。 .exe是編譯代碼,在啓動時調用main()函數。 –