、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”指的是Microsoft Foundation Classes (MFC) 库中与动态链接库(DLL)相关的开发技术。MFC 是微软提供的一种C++类库,它为Windows应用程序开发提供了丰富的接口,使得开发者可以更方便地利用Windows ...
1. **Non-MFCDLL(非 MFC 动态库)**:这类 DLL 不使用 MFC 类库结构,而是使用标准 C 接口。因此,无论是非 MFC 还是 MFC 编写的应用程序都可以调用这类 DLL 中的函数。 2. **MFCRegularDLL(MFC 规则 DLL)**:...
- **扩展 DLL (Extension DLL)** - DLL 中定义的类和函数只能被 MFC 应用程序使用,同样需要额外安装 MFC 动态链接库。 ##### 2.4 导出函数的方法 在 MFC 环境下创建 DLL 并导出函数的方法主要有以下两种: - **...
例如,"Dlltest"可能是主应用程序项目,而"DllMfc"则可能是MFC DLL项目。"Win32Dll"可能是关于Win32 API与DLL交互的基础知识。"DLL 库说明.doc"则可能详述了如何构建和使用这些DLL的步骤。 学习和掌握MFC DLL的创建...
在MFC中,创建DLL通常有两种方式:扩展DLL(Extension DLL)和常规DLL(Regular DLL)。扩展DLL主要用于增强MFC应用程序的功能,而常规DLL则可以独立于MFC应用程序使用。 封装MFC对话框资源时,我们需要在DLL中定义...
MFC支持多种类型的DLL(Dynamic Link Library),其中包括两种主要类型:常规DLL(Regular DLL)和扩展DLL(Extension DLL)。这两类DLL在使用方式和功能上有所不同,本篇文章将详细介绍这两种DLL及其应用。 1. ...
在VC++中,DLL编程涉及到三个主要类型:Non-MFC DLL、MFC Regular DLL和MFC Extension DLL。 1. **Non-MFC DLL**:这种类型的DLL不依赖于MFC(Microsoft Foundation Classes),它的导出函数遵循标准的C接口,因此...
Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。 (1)非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或...
3. Extension DLL:这类DLL用于重用从MFC继承的类,输出的函数只能被使用MFC且动态链接到MFC的应用程序调用。它们使用MFC的动态链接版本创建,且需要自行编写DLLMain函数进行初始化和清理。 DLL函数调用规则: 在...
不过,MFC常规DLL不能向应用程序传递MFC对象指针,如果需要这样做,则需使用MFC扩展DLL。MFC常规DLL根据与MFC的链接方式分为动态链接和静态链接两种类型。 3. **MFC扩展DLL** MFC扩展DLL类似于应用程序而不是一组...
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类但没有消息...
Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。 非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC...
本篇文章将详细阐述在VC下创建DLL的三种主要类型:Non-MFC DLL、Regular DLL和Extension DLL,并提供编写DLL的基本步骤。 1. **Non-MFC DLL**: 非MFC(Microsoft Foundation Classes)DLL是不依赖MFC库的动态链接...
VC++支持三种 DLL,它们分别是 Non-MFC DLL(非 MFC 动态库)、MFC Regular DLL(MFC 规则 DLL)、MFC Extension DLL(MFC 扩展 DLL)。Non-MFC DLL 不采用 MFC 类库结构,其导出函数为标准的 C 接口,能被非 MFC 或...
3. VC++支持三种DLL:Non-MFCDLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。非MFC动态库提供标准C接口;MFC规则DLL包含一个继承自CWinApp的类,但没有消息循环;而MFC扩展...
3. **Extension DLL**:专为输出MFC扩展类的函数或子类设计,必须与使用MFC的应用程序配合使用,且只能与MFC动态链接版本一起工作。 常规DLL还可以分为两种:静态链接MFC和动态链接MFC。静态链接意味着DLL与MFC库...
- **MFC Extension DLL**:MFC扩展DLL基于MFC的动态链接版本创建,只能被MFC类库编写的应用程序调用。 #### 3. 静态链接库示例 为了更好地理解DLL与静态链接库之间的差异,可以通过一个静态链接库的例子来进行...
- MFC Regular DLL包含CWinApp类但没有消息循环,适合扩展MFC应用程序功能。 - MFC Extension DLL使用MFC的动态链接版本创建,只能被MFC程序调用。 **静态链接库的创建与使用** 1. 创建静态库(.lib):创建一个...
VC++支持三种类型的DLL:Non-MFC DLL、MFC Regular DLL和MFC Extension DLL。Non-MFC DLL不依赖MFC框架,提供标准C接口,可被非MFC或MFC应用调用。MFC Regular DLL包含一个继承自CWinApp的类,但没有消息循环。MFC ...