记得以前看过,为了不忘记,mark一下。。
a、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的初始化函数。
分享到:
相关推荐
2. **选择DLL类型**:根据需求,选择常规DLL或扩展DLL。 3. **编写代码**:在DLL工程中,添加你需要的类和函数。对于MFC DLL,通常会在`AFXWIN_H`头文件之后包含`AFXDLL_H`来启用DLL模式。 4. **导出函数**:在DLL...
这个名为"MFCDll.rar"的压缩包文件显然包含了关于MFC动态链接库(DLL)的实例和相关资源。动态链接库是一种共享代码的方式,使得多个程序可以同时使用同一份代码,从而节省内存并提高系统效率。 在Windows环境下,...
在“mfcdll.rar_MFCdll_mfc dll download”这个压缩包中,提供的可能是一个包含了MFC DLL文件的集合,用于静态链接或动态链接到用户的项目中。 **MFC库的介绍:** MFC提供了一个面向对象的接口,用于访问Windows ...
MFCDLL.rar_MFCdll_mfc dll 这个压缩包主要涉及的是Microsoft Foundation Class (MFC) 库的使用,特别是在VC++开发环境中的实践应用。MFC 是微软提供的一套C++类库,用于简化Windows应用程序的开发,它封装了大量的...
这两个宏允许你的类支持运行时类型信息,这是MFC对象能够在DLL和主应用程序之间正确通信的关键。 ```cpp // 在头文件中 class DECLARE_DYNAMIC(CMyExportedClass) { public: CMyExportedClass(); virtual ~...
首先,我们需要理解MFC DLL的两种类型:MFC扩展DLL和MFC常规DLL。MFC扩展DLL允许我们在DLL中使用MFC的C++对象,而MFC常规DLL则将MFC类的实现封装在DLL中,调用者通过接口来使用。在这个例子中,"MFCLibrary2"可能是...
- MFC DLL有三种类型:常规DLL、扩展DLL和MFC应用DLL。这里我们讨论的是MFC应用DLL,它与MFC应用程序共享同一个MFC库。 - 使用Visual Studio创建MFC DLL项目,选择"Win32 Dynamic-Link Library",然后在MFC选项中...
MFCDLL0.rar是一个包含MFC(Microsoft Foundation Classes)项目的压缩包,该项目的主要目标是将MFC界面功能封装到一个动态链接库(DLL)中,以便其他应用程序能够方便地调用这些功能。MFC是微软提供的C++类库,用于...
MFC DLL分为两种主要类型:普通MFC DLL和扩展MFC DLL。普通MFC DLL是标准的DLL,它使用MFC类库但不包含MFC的初始化代码。而扩展MFC DLL则包含了MFC的初始化代码,可以创建和管理自己的MFC对象,且与主应用程序共享...
本示例中的"规则MFC DLL"是一种特别设计的动态链接库,它允许在运行时被其他应用程序加载和调用,用于创建和管理对话框。对话框在Windows程序中经常用于与用户进行交互,展示信息或收集输入数据。 创建MFC DLL的...
这个压缩包“计算器 包含基本MFCDLL”显然包含了一个基于MFC开发的计算器程序以及必要的MFC动态链接库。 MFC库的核心概念是“类”,它封装了Windows API中的许多函数和结构。例如,CWinApp类代表应用程序,CWnd类...
MFCDLL2017.zip 是一个压缩包文件,它包含了Visual Studio 2017开发过程中所需的MFC(Microsoft Foundation Class)库文件。MFC是微软为Windows平台开发的应用程序提供的一种C++类库,它封装了Windows API,使得...
MFC规则DLL是指在VC++环境下使用MFC框架编写的动态链接库,它可以分为静态链接到MFC的规则DLL和动态链接到MFC的规则DLL两类,并且可以设置其类型、是否支持自动化技术、Windows Sockets等功能。创建MFC规则DLL的过程...
MFC DLL主要有两种类型:常规DLL和扩展DLL。常规DLL使用MFC作为静态库,而扩展DLL则与MFC共享库链接,使得DLL可以直接访问MFC类。在这个示例中,很可能使用的是扩展DLL,因为它们通常用于创建包含MFC对象(如窗口)...
在MFC中,有两种类型的DLL:扩展DLL和常规DLL。对于共享功能,我们通常使用常规DLL。创建MFC常规DLL时,我们需要在Visual Studio中选择MFC DLL模板,定义接口函数,并确保所有的依赖项都包含在DLL中。这些接口函数将...
1. 打开VS2012,选择文件-新建-项目-MFC DLL,在名称栏中输入工程命名OneDLL,在位置栏中选择存放工程文件的路径-确定-点击下一步-DLL类型:使用共享MFC DLL的规则DLL-点击完成。 2. 在生成的项目中,我们感...
在这个“mfc创建DLL”的主题中,我们将深入探讨如何使用MFC构建这两种类型的DLL,以及如何在其他项目中使用这些DLL。 首先,让我们了解创建常规MFC DLL的步骤。常规MFC DLL 是一个与MFC静态链接的库,这意味着它...
MFCDLL回掉函数是Microsoft Foundation Class (MFC) 库中用于实现动态链接库(DLL)与应用程序之间通信的一种技术。在这个小例子中,我们将深入探讨如何在Visual Studio 2008环境下创建和使用MFCDLL回掉函数。 首先,...
在MFC中,DLL有两种主要类型:MFC扩展DLL和MFC常规DLL。本例中我们关注的是MFC扩展DLL,因为它允许直接使用MFC类。 首先,创建MFC扩展DLL工程。在Visual Studio中,选择"文件" > "新建" > "项目",然后在模板中选择...
这篇博文详细介绍了如何将MFC资源文件转换为DLL,便于其他程序调用。下面,我们将深入探讨这个过程,并解析相关的知识点。 首先,了解DLL(Dynamic Link Library)是关键。DLL是一种共享库,它包含可由多个执行程序...