我注意到當你使用像SFML這樣的庫時,你自己並不需要鏈接到opengl32.lib,我真的不知道這是怎麼回事,因爲我必須在使用我自己的多媒體庫的項目中鏈接opengl32這是一個靜態庫?僅僅是因爲SFML庫是一個動態庫,並且在SFML項目中鏈接了opengl32? 這不是關於SFML的問題,而是關於所有DLL的一般問題。動態庫是否爲您鏈接其他庫?
回答
如果一個動態庫正在使用另一個動態庫,它會自動加載到進程中,是的。
是的,DLL可以引用其他DLL,或者在內部靜態編譯它們。爲了檢查外部依賴關係,Microsoft很早以前就開發了一個名爲Dependency Walker的工具,您可以在其中拖動一個DLL或可執行文件,並查看它依賴於哪些DLL(並自動加載)。該工具默認與Visual Studio一起發貨,但您現在可以使用download it from here for free。該頁面解釋了關於它的所有其他內容。
好的謝謝。但這是否意味着我的多媒體庫的用戶需要在我內部編譯的計算機上安裝.DLL文件?我想freetype就是一個很好的例子。 – grimgrom 2013-05-05 21:09:25
如果你動態鏈接它,你自己的DLL將只包含符號引用,所以是的,你需要運送引用的DLL,或讓用戶單獨安裝它。與DirectX沒有什麼不同。 – 2013-05-05 21:48:54
- 1. 將共享庫與其他共享庫鏈接是否好?
- 2. 動態鏈接庫
- 3. 如何將gcc中的靜態庫與其他動態庫鏈接?
- 4. 什麼是靜態庫,靜態鏈接動態庫和動態鏈接動態庫的.lib文件?
- 5. 如何鏈接使用其他庫的一個靜態C庫
- 6. 將GSL(或其他庫)靜態鏈接到共享庫中
- 7. Cython動態鏈接庫
- 8. 編譯動態鏈接庫
- 9. G ++:鏈接動態(dylib)庫
- 10. 編譯動態鏈接庫
- 11. 靜態鏈接庫和動態鏈接庫之間的區別是什麼
- 12. 是否有可能將靜態庫鏈接到Visual Studio中的動態庫?
- 13. 在窗口下將靜態鏈接庫轉換爲動態鏈接庫
- 14. 鏈接的Neo4j與其他數據庫
- 15. 從其他數據庫鏈接
- 16. 鏈接到一個鏈接到靜態庫和其他共享庫的DLL的正確方法是什麼?
- 17. 是否與iPhone上的Sqlite庫安全地動態鏈接?
- 18. 建設自己的iOS靜態庫 - 與其他框架鏈接
- 19. 靜態鏈接到動態庫。 glibc
- 20. 鏈接動態和靜態庫RCPP
- 21. 靜態和動態庫鏈接
- 22. 在linux上構建靜態C++庫 - 我需要鏈接到其他庫嗎?
- 23. 動態LINQ與其他數據庫
- 24. CodeBlocks「其他鏈接器選項」翻譯「鏈接庫」和庫包含效率
- 25. UNIX:靜態庫鏈接到靜態庫
- 26. Xcode6塊一些靜態庫的靜態庫,而不是其他
- 27. Bada是否支持爲應用程序使用和創建動態鏈接庫?
- 28. C++共享庫創建 - 與其他共享庫鏈接
- 29. 如何將1個倉庫鏈接到其他倉庫?
- 30. 如何將共享庫與其他共享庫鏈接到Linux?
對於使用我的多媒體庫的開發人員來說,這不應該讓這種方式更容易嗎?我的意思是,我猜他們甚至都不需要我建立多媒體DLL時必須連接的必要庫。例如freetype? – grimgrom 2013-05-05 21:03:40
是的,它可以做到這一點。您當然不想知道庫的完整列表,您碰巧使用的某些庫需要實現其自己的依賴關係。當然,如果你正在製作自己的多媒體DLL,那麼希望你隱藏它實際使用的內容,並且不要讓你的客戶端代碼看到你使用的庫是什麼(我的意思是,你不需要客戶端代碼使用freetype,正確 - 他們只是說「我希望Courier Bold中的文本大小爲10」(以某種方式),然後客戶端代碼發送要打印的字符串......) – 2013-05-05 21:08:04
正確。這是我想要達到的。當我通過vC++或gcc構建動態庫時,它會如何默認?我想我只需要使用freetype的靜態庫版本? – grimgrom 2013-05-05 21:11:38