建立MFC动态库时,第二种类型和第三种类型有什么区别呢?这两种建立出来的都是静态链接库吧?
展开全部
第二种:正规的 DLL
第三种:扩展的 DLL
都是动态链接MFC,只有一种默认静态链接MFC。
扩展 DLL 支持 C++ 接口,换句话说,该 DLL 可以导出整个类,客户可以构造这些类的对象或从这些类进行派生。扩展 DLL 动态连接到 MFC 库的 DLL版本的代码,因此,扩展 DLL 要求客户程序被动态连接到 MFC 库 (AppWizard 默认设置 ) ,并且客户程序和扩展 DLL 要一致连接到 MFC DLL 的相同版本 (mfc42.dll、 mfcd42.dll 等 ) 。扩展 DLL 很小,我们可以创建一个简单的扩展 DLL ,大约 10KB 左右,它的装载会很快。
如果我们需要一个 DLL ,并希望它可以被任何 Win32 编程环境 ( 包括 Visual Basic 5.0) 装载,那么我们必须使用正规 DLL 。这里有一个很大的限制就是,正规 DLL 可以导出 C 风格的函数,但不能导出 C++ 类、成员函数或重载函数,因为每一个 C++ 编译器都有自己修饰名字的方法。不过,我们可以在正规 DLL内部使用 C++ 类 ( 特别是 MFC 库的类 ) 。
简单的说,正规DLL符合通用标准,可以被多种语言调用,扩展DLL是C++专用,采用类接口。
第三种:扩展的 DLL
都是动态链接MFC,只有一种默认静态链接MFC。
扩展 DLL 支持 C++ 接口,换句话说,该 DLL 可以导出整个类,客户可以构造这些类的对象或从这些类进行派生。扩展 DLL 动态连接到 MFC 库的 DLL版本的代码,因此,扩展 DLL 要求客户程序被动态连接到 MFC 库 (AppWizard 默认设置 ) ,并且客户程序和扩展 DLL 要一致连接到 MFC DLL 的相同版本 (mfc42.dll、 mfcd42.dll 等 ) 。扩展 DLL 很小,我们可以创建一个简单的扩展 DLL ,大约 10KB 左右,它的装载会很快。
如果我们需要一个 DLL ,并希望它可以被任何 Win32 编程环境 ( 包括 Visual Basic 5.0) 装载,那么我们必须使用正规 DLL 。这里有一个很大的限制就是,正规 DLL 可以导出 C 风格的函数,但不能导出 C++ 类、成员函数或重载函数,因为每一个 C++ 编译器都有自己修饰名字的方法。不过,我们可以在正规 DLL内部使用 C++ 类 ( 特别是 MFC 库的类 ) 。
简单的说,正规DLL符合通用标准,可以被多种语言调用,扩展DLL是C++专用,采用类接口。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询