0

我需要创建一个将由 VB.net 应用程序调用和使用的 C++ 非 dotnet DLL。我正在尝试确定要创建的 DLL 的类型。DLL 将包含我将要编写的一些类、变量和函数。我知道可以创建三种类型的 DLL:1) 常规 DLL - 静态链接到 MFC,2) 常规 DLL - 动态链接到 MFC,以及 3) 使用标准 Windows 库的 DLL,非 MFC。

我的问题是,哪个最好用,一个链接到 MFC,还是一个使用标准 Windows 库?有人可以提出建议并解释 MFC 和标准库之间的区别吗?

谢谢!

加里

4

1 回答 1

1

Microsoft 基础类 (MFC) 是围绕 Win32 API 的相对较薄的 C++ 包装器,重点是 UI 编码。您不需要将 MFC 静态或动态链接到您的 DLL,除非您正在使用 MFC 工具(例如其容器类)或尝试在您的 C++ DLL 中显示用 MFC 编写的 UI。这些都是不太可能的情况。

自从 .NET 开始以来,人们就一直在从 VB.NET 调用非托管代码。在http://www.pinvoke.net/上有一个关于该主题的完整 wiki,并且在 CodeProject 上有一个有用的演练,http://www.codeproject.com/Articles/6243/Step-by-Step-Calling- C-DLLs-from-VC-and-VB-Part-2也是如此。我建议从那里开始。

它稍微复杂一些,但您也可以使用 C++/CLI 在 C++ 中编写托管代码,这些代码可以像任何其他托管代码程序集一样被引用,而不是使用平台调用。您可以使用它来创建调用非托管的普通旧 C++ 代码的 VB 可调用托管接口。在http://msdn.microsoft.com/en-us/library/ms379617(v=vs.80).aspx上有一个关于 MSDN 的 C++/CLI 介绍,以及一个使用它作为非托管 C++ 的 shim 的快速示例这个 MSDN 博客条目:http: //blogs.msdn.com/b/junfeng/archive/2006/05/20/599434.aspx

于 2013-10-22T20:12:10.740 回答