`
testcs_dn
  • 浏览: 113791 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Regular DLL(MFC规则DLL)、MFC...Extension DLL(MFC扩展DLL 区别

 
阅读更多
、Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。

b、Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上的。

静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。该类DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。输入函数有如下形式:
extern "C " EXPORT YourExportedFunction( );
如果没有extern “C”修饰,输出函数仅仅能从C++代码中调用。
DLL应用程序从CWinApp派生,但没有消息循环。

动态链接到MFC的规则DLL应用程序里头的输出函数可以被任意Win32程序使用,包括使用MFC的应用程序。但是,所有从DLL输出的函数应该以如下语句开始:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
此语句用来正确地切换MFC模块状态。

Regular DLL能够被所有支持DLL技术的语言所编写的应用程序所调用。在这种动态连接库中,它必须有一个从CWinApp继承下来的类,DllMain函数被MFC所提供,不用自己显式的写出来。

c、Extension DLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从MFC所继承下来的类。它输出的函数仅可以被使用MFC且动态链接到MFC的应用程序使用。可以从MFC继承你所想要的、更适于你自己用的类,并把它提供给你的应用程序。你也可随意的给你的应用程序提供MFC或MFC继承类的对象指针。Extension DLL使用MFC的动态连接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。Extension DLLs 和Regular DLLs不一样,它没有一个从CWinApp继承而来的类的对象,所以,你必须为自己DllMain函数添加初始化代码和结束代码。

和规则DLL相比,有以下不同:

1、它没有一个从CWinApp派生的对象;
2、它必须有一个DllMain函数;
3、DllMain调用AfxInitExtensionModule函数,必须检查该函数的返回值,如果返回0,DllMmain也返回0;
4、如果它希望输出CRuntimeClass类型的对象或者资源(Resources),则需要提供一个初始化函数来创建一个CDynLinkLibrary对象。并且,有必要把初始化函数输出;
5、使用扩展DLL的MFC应用程序必须有一个从CWinApp派生的类,而且,一般在InitInstance里调用扩展DLL的初始化函数。
分享到:
评论

相关推荐

    dllmfc

    标题中的“dllmfc”指的是Microsoft Foundation Classes (MFC) 库中与动态链接库(DLL)相关的开发技术。MFC 是微软提供的一种C++类库,它为Windows应用程序开发提供了丰富的接口,使得开发者可以更方便地利用Windows ...

    VC中不同类型DLL区别及其引用方法

    1. **Non-MFCDLL(非 MFC 动态库)**:这类 DLL 不使用 MFC 类库结构,而是使用标准 C 接口。因此,无论是非 MFC 还是 MFC 编写的应用程序都可以调用这类 DLL 中的函数。 2. **MFCRegularDLL(MFC 规则 DLL)**:...

    MFC下DLL编程(图解)

    - **扩展 DLL (Extension DLL)** - DLL 中定义的类和函数只能被 MFC 应用程序使用,同样需要额外安装 MFC 动态链接库。 ##### 2.4 导出函数的方法 在 MFC 环境下创建 DLL 并导出函数的方法主要有以下两种: - **...

    MFC dll库介绍及使用入门

    例如,"Dlltest"可能是主应用程序项目,而"DllMfc"则可能是MFC DLL项目。"Win32Dll"可能是关于Win32 API与DLL交互的基础知识。"DLL 库说明.doc"则可能详述了如何构建和使用这些DLL的步骤。 学习和掌握MFC DLL的创建...

    dll封装MFC对话框资源

    在MFC中,创建DLL通常有两种方式:扩展DLL(Extension DLL)和常规DLL(Regular DLL)。扩展DLL主要用于增强MFC应用程序的功能,而常规DLL则可以独立于MFC应用程序使用。 封装MFC对话框资源时,我们需要在DLL中定义...

    MFC的两类DLL

    MFC支持多种类型的DLL(Dynamic Link Library),其中包括两种主要类型:常规DLL(Regular DLL)和扩展DLL(Extension DLL)。这两类DLL在使用方式和功能上有所不同,本篇文章将详细介绍这两种DLL及其应用。 1. ...

    VC++动态链接库(DLL)编程深入浅出(zz).doc

    在VC++中,DLL编程涉及到三个主要类型:Non-MFC DLL、MFC Regular DLL和MFC Extension DLL。 1. **Non-MFC DLL**:这种类型的DLL不依赖于MFC(Microsoft Foundation Classes),它的导出函数遵循标准的C接口,因此...

    有关DLL的教材

    Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。 (1)非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或...

    DLL创建与函数调用规则

    3. Extension DLL:这类DLL用于重用从MFC继承的类,输出的函数只能被使用MFC且动态链接到MFC的应用程序调用。它们使用MFC的动态链接版本创建,且需要自行编写DLLMain函数进行初始化和清理。 DLL函数调用规则: 在...

    将现有的C++类转换成dll动态链接库

    不过,MFC常规DLL不能向应用程序传递MFC对象指针,如果需要这样做,则需使用MFC扩展DLL。MFC常规DLL根据与MFC的链接方式分为动态链接和静态链接两种类型。 3. **MFC扩展DLL** MFC扩展DLL类似于应用程序而不是一组...

    C++dll编程入门[整理].pdf

    DLL有三种主要类型:Non-MFC DLL(非MFC DLL),MFC Regular DLL(MFC规则DLL)和MFC Extension DLL(MFC拓展DLL)。非MFC DLL不依赖MFC类库,可以被非MFC或MFC程序调用;MFC Regular DLL包含CWinApp类但没有消息...

    VC++动态链接库(dll)编程深入浅出-----PDF和源码

     Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。  非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC...

    vc下写dll vc下写dll vc下写dll vc下写dll

    本篇文章将详细阐述在VC下创建DLL的三种主要类型:Non-MFC DLL、Regular DLL和Extension DLL,并提供编写DLL的基本步骤。 1. **Non-MFC DLL**: 非MFC(Microsoft Foundation Classes)DLL是不依赖MFC库的动态链接...

    VC++动态链接库(DLL)编程深入浅出 中老鳥必備.pdf

    VC++支持三种 DLL,它们分别是 Non-MFC DLL(非 MFC 动态库)、MFC Regular DLL(MFC 规则 DLL)、MFC Extension DLL(MFC 扩展 DLL)。Non-MFC DLL 不采用 MFC 类库结构,其导出函数为标准的 C 接口,能被非 MFC 或...

    VC++动态链接库(DLL)编程深入浅出

    3. VC++支持三种DLL:Non-MFCDLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。非MFC动态库提供标准C接口;MFC规则DLL包含一个继承自CWinApp的类,但没有消息循环;而MFC扩展...

    如何实现DLL编程.doc

    3. **Extension DLL**:专为输出MFC扩展类的函数或子类设计,必须与使用MFC的应用程序配合使用,且只能与MFC动态链接版本一起工作。 常规DLL还可以分为两种:静态链接MFC和动态链接MFC。静态链接意味着DLL与MFC库...

    VC++动态链接库(DLL)编程深入浅出(全).pdf

    - **MFC Extension DLL**:MFC扩展DLL基于MFC的动态链接版本创建,只能被MFC类库编写的应用程序调用。 #### 3. 静态链接库示例 为了更好地理解DLL与静态链接库之间的差异,可以通过一个静态链接库的例子来进行...

    C++dll编程入门.pdf

    - MFC Regular DLL包含CWinApp类但没有消息循环,适合扩展MFC应用程序功能。 - MFC Extension DLL使用MFC的动态链接版本创建,只能被MFC程序调用。 **静态链接库的创建与使用** 1. 创建静态库(.lib):创建一个...

    DLL学习[整理].pdf

    VC++支持三种类型的DLL:Non-MFC DLL、MFC Regular DLL和MFC Extension DLL。Non-MFC DLL不依赖MFC框架,提供标准C接口,可被非MFC或MFC应用调用。MFC Regular DLL包含一个继承自CWinApp的类,但没有消息循环。MFC ...

Global site tag (gtag.js) - Google Analytics