2013-10-22 144 views
0

我需要創建一個C++非dotnet DLL,這個DLL將被VB.net應用程序調用和使用。我正在嘗試確定要創建的DLL的類型。該DLL將包含我將要編寫的一些類,變量和函數。我知道可以創建三種類型的DLL:1)常規DLL - 靜態鏈接到MFC,2)常規DLL - 動態鏈接到MFC,以及3)使用標準Windows庫(非MFC)的DLL。DLL創建類型

我的問題是,哪個最好用,鏈接到MFC,還是使用標準windows庫?有人可以提出建議並解釋MFC和標準庫之間的區別嗎?

謝謝!

加里

+0

如果您需要從VB.Net使用它,則應該使用C++/CLI,它可以包含託管代碼和非託管代碼。 – SLaks

+1

您一直在閱讀錯誤的MSDN文章,那些討論DLL的人的確經常提到MFC。這是不太可能的,你會想使用MFC。 C++類不能在VB.NET中使用。您絕對應該考慮C++/CLI,從託管程序中使用起來要容易得多。一個進程內COM服務器也運行良好。 –

回答

1

微軟基礎類(MFC)是圍繞所述的Win32 API的相對薄的C++包裝,對UI編碼的重視。除非您正在使用諸如其容器類之類的MFC工具,或者試圖在您的C++ DLL中顯示用MFC編寫的UI,否則不需要將MFC靜態或動態鏈接到您的DLL。這些都不太可能。

自.NET開始以來,人們一直在VB.NET中調用非託管代碼。這裏有一個關於這個主題的完整Wiki,http://www.pinvoke.net/,CodeProject還有一個有用的演練,http://www.codeproject.com/Articles/6243/Step-by-Step-Calling-C-DLLs-from-VC-and-VB-Part-2也是如此。我建議從那裏開始。

它稍微複雜一些,但您也可以使用C++/CLI編寫C++託管代碼,可以像引用任何其他託管代碼程序集一樣引用它,而不使用平臺調用。您可以使用它來創建調用非託管的普通舊C++代碼的VB可調用託管接口。在MSDN上有關於C++/CLI的介紹http://msdn.microsoft.com/en-us/library/ms379617(v=vs.80).aspx以及在此MSDN博客條目中使用它作爲非託管C++的填充的快速示例:http://blogs.msdn.com/b/junfeng/archive/2006/05/20/599434.aspx