在C源代碼
回答
你認爲是有效的有一個DLL(很多常用功能),然後創建一個程序,最終將使用它們,或者有所有源代碼。
對於內存和磁盤空間,這是更有效地使用一個共享庫(DLL中是Windows實現共享庫)中,假設至少兩個程序使用該組件。如果只有一個程序會使用這個組件,那麼就不會節省內存或磁盤空間。
共享庫可能比靜態鏈接代碼稍慢;然而,這可能是非常小的,而共享庫帶來了許多好處,使得它更有價值(例如動態加載和處理符號的能力,這允許插件式體系結構)。也就是說,也有一些缺點(如果你不小心你的DLL的存在位置,它們是如何版本化的以及誰可以更新它們,那麼你可以進入DLL hell)。
要包括dll,必須遵循什麼語法?
這取決於。共享庫有兩種使用方式。在第一種方式中,你告訴鏈接器引用共享庫,共享庫將在程序啓動時自動加載,並且基本上像普通引用代碼一樣(包括各種頭文件,並且在使用時使用符號名稱你想參考它)。第二種方法是動態加載共享庫(在Windows上,這是通過LoadLibrary完成的,而在UNIX上完成則是dlopen)。第二種方式可以根據共享庫中是否存在符號來改變程序的行爲,並檢查可用的符號集。對於第二種方法,您可以使用GetProcAddress(Windows)或dlsym(UNIX)來獲得指向庫中定義的函數的指針,並且可以傳遞函數指針以引用加載的函數。
你可以把你的功能集成到其中任何一個在編譯時合併到您的應用程序,是基本相同,把.c文件在項目中的靜態庫(.LIB一)。
或者你可以在運行時使用包含函數的dll。 dll的優點是兩個使用相同函數的程序可以使用相同的dll(節省磁盤空間),並且可以在不更改程序的情況下升級dll - 這些對您而言可能都不重要。
程序的運行沒有什麼特別的,你需要做的,包括它的時候DLL被自動加載(你可以加載一個dll特別是在你的代碼 - 有時有特殊原因要做到這一點)
編輯 - 如果你需要創建一個存根lib中現有的DLL看到http://support.microsoft.com/kb/131313
- 1. Objective-C源代碼
- 2. Google.Apis.Auth源代碼c#
- 3. C源代碼DLL
- 4. c#.net源代碼
- 5. C庫源代碼
- 6. 測試C/C++源代碼
- 7. 如何將Linux C++源代碼轉換爲Windows C++源代碼?
- 8. 在C源代碼中加密密碼
- 9. C++源代碼標記
- 10. C#源代碼搜索
- 11. SHA-512源代碼C
- 12. 鏈接C++源代碼
- 13. C++源代碼美化(vC++)?
- 14. C++異常類源代碼
- 15. 反混淆C++源代碼
- 16. C++ 11源代碼生成
- 17. C++中的SetFileAttributeW源代碼
- 18. OpenGL DevIL C++源代碼
- 19. 混合C/C++源代碼:在C代碼中獲取sizeof(C++ struct)
- 20. 將Java源代碼轉換爲C++源代碼的工具
- 21. GNU C庫的源代碼在哪裏?
- 22. 在Visual Studio中查找源代碼(C#)
- 23. 在C源代碼中對齊「=」
- 24. #如果,#else僞,#endif在C#源代碼
- 25. 在TreeView C#中的HTML源代碼#
- 26. 源碼在C++
- 27. 來自C++源代碼的C-DLL
- 28. C++代碼使用.cpp源代碼編譯,但不包含.c
- 29. 在運行時編譯c源代碼中的另一個源代碼
- 30. PHP代碼顯示在源代碼
你會如何從c代碼中調用它? – cMinor 2011-03-20 04:25:19
現在我正在使用dev shed c/C++,你知道一個示例代碼嗎? – cMinor 2011-03-20 04:26:24
@darkcminor,你可以像通常那樣稱呼它。您在聲明中包含「.h」文件,然後您只需使用該函數。您需要更改項目配置以鏈接到DLL。 – 2011-03-20 04:27:07