我目前正在嘗試學習如何在C#和C++中編寫和使用Windows的.dll文件。我想,一旦我理解了其中的一種語言,我就可以很容易地找出另一種語言。今天我搜索了5個多小時,但找到一份可以工作的.dll指南並沒有運氣。他們或者過時了,拒絕與我的編譯器一起工作,或者只是徹頭徹尾的垃圾。有沒有人知道好指南工程?我正在使用Dev C++和VC++ 2010.感謝您的幫助! :)如何創建和使用C#中的dll文件
回答
在C#中的DLL很容易。
- 創建一個新的項目,建立一個DLL。
- 將對新dll項目的引用添加到現有項目中。
- 使用在您的dll中標記爲公共的類,就好像它們是您原始項目的一部分。
Peachykeen奠定了從C++ DLL導出類和函數的最基本的方法。我建議採用更先進的技術。而不是導出你需要的每個類,從接口(至少有一個純虛擬方法的類)中獲取dll中的所有類。然後導出返回指向這些接口的指針的工廠函數。這減少了你的主要可執行文件和dll之間的耦合,因爲你只需要共享接口,而不是任何實現細節。
代碼項目在這項技術上有一篇很好的文章。上面的方法
http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx
一個很好的好處是,它極大地減少編譯時間。您可以完全重新實現DLL,而無需重新編譯主應用程序。
C#和C++中的DLL有些不同,尤其是在它們的使用方式上。 C#使用程序集,包含各種元數據,並隱藏大部分細節。 C++沒有,你必須告訴它什麼是導出和如何。
製作DLL文件一般包括編寫代碼,然後爲每個類或函數要使用(從DLL外),添加此位:
int __declspec(dllexport) function(int param);
class __declspec(dllexport) object;
要「出口」的符號,使它們從DLL外部可見。你只需要爲外部使用的類和類,只在類上使用(不是每種方法)。
使用該DLL時,您需要包含一個包含所有功能但具有__declspec(dllimport)
筆記的標頭。這將告訴你的代碼使用這些外部DLL。您需要將lib(在編譯DLL時創建)作爲輸入文件提供給鏈接器,並且所有內容都應該排成一行。
一種簡單的方法來處理是:
#ifndef IMPORT_MYLIB
# define MYLIB_API __declspec(dllexport)
#else
# define MYLIB_API __declspec(dllimport)
#endif
int MYLIB_API function();
當另一個應用程序使用該DLL,只需#define IMPORT_MYLIB
和報頭將被適當地設置。
對於C#,您需要簡單地創建一個帶有公共類的庫,然後將其添加爲另一個項目的引用。然後你可以使用它的類,這兩個文件會自動鏈接在一起(非常簡單,但並不像C++的方法那麼幹淨)。
請注意,DLL是Microsoft特定的,並且稍後可能會對您感興趣的一些小細節(如何搜索導入等)。
- 1. c中創建dll文件#
- 2. 如何使用NASM創建.dll文件?
- 3. 如何從C#DLL創建.lib文件?
- 4. 在C#中使用Visual C++創建的dll文件?
- 5. 如何在C++中使用dll文件?
- 6. 將.exe C++文件(創建窗口)轉換爲.dll C++文件並在C#中使用該.dll文件。
- 7. 如何在C#中創建和使用DLL模塊?沒有DLL彙編
- 8. 如何使用c#創建.dbf文件?
- 9. 創建dll文件
- 10. 如何在Visual Studio C#2010中創建DLL文件表達版?
- 11. 使用nmake從cpp文件創建dll
- 12. 從C++源文件創建Windows DLL
- 13. 如何創建一個dll文件
- 14. 如何從DLL/EXE創建MSIL文件
- 15. 如何在Visual C++中創建ActiveX DLL
- 16. 如何使用外部.dll創建.exe文件?
- 17. 如何使用C#代碼在Visual Studio中創建本機DLL?
- 18. VB6:如何創建一個DLL並在C#中使用它?
- 19. 如何使用Turbo C從C程序創建DLL
- 20. 如何創建和使用C#編寫Excel .xls文件
- 21. 如何在Visual C++中創建.lib文件和.exe文件?
- 22. 如何在c#中使用cmd創建文本文件?
- 23. 如何使用Python中的DLL文件?
- 24. Java創建.dll文件
- 25. 問題,創建DLL文件
- 26. 使用VC++命令行創建.dll和.lib文件
- 27. 如何創建DTD文件的DLL文件?
- 28. 建立在C#中的DLL文件
- 29. 使用C++/CLI創建一個dll
- 30. 在Linux中使用C創建文件
使用虛擬函數和工廠可以工作,使用虛擬函數可能比導出更容易,但我認爲設置稍微複雜一些。只是不同的風格,真的,都工作得很好。 – ssube 2011-04-06 02:14:31