`
BruceXX
  • 浏览: 141495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MFC DLL 的三种类型

    博客分类:
  • MFC
阅读更多

记得以前看过,为了不忘记,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的初始化函数。
分享到:
评论

相关推荐

    MFC dll的创建与使用

    2. **选择DLL类型**:根据需求,选择常规DLL或扩展DLL。 3. **编写代码**:在DLL工程中,添加你需要的类和函数。对于MFC DLL,通常会在`AFXWIN_H`头文件之后包含`AFXDLL_H`来启用DLL模式。 4. **导出函数**:在DLL...

    MFCDll.rar_ mfc dll_MFC 动态链接库_MFCDll.dll_MFCdll_mfc dll

    这个名为"MFCDll.rar"的压缩包文件显然包含了关于MFC动态链接库(DLL)的实例和相关资源。动态链接库是一种共享代码的方式,使得多个程序可以同时使用同一份代码,从而节省内存并提高系统效率。 在Windows环境下,...

    mfcdll.rar_MFCdll_mfc dll download

    在“mfcdll.rar_MFCdll_mfc dll download”这个压缩包中,提供的可能是一个包含了MFC DLL文件的集合,用于静态链接或动态链接到用户的项目中。 **MFC库的介绍:** MFC提供了一个面向对象的接口,用于访问Windows ...

    MFCDLL.rar_MFCdll_mfc dll

    MFCDLL.rar_MFCdll_mfc dll 这个压缩包主要涉及的是Microsoft Foundation Class (MFC) 库的使用,特别是在VC++开发环境中的实践应用。MFC 是微软提供的一套C++类库,用于简化Windows应用程序的开发,它封装了大量的...

    MFC 扩展DLL(导出类)

    这两个宏允许你的类支持运行时类型信息,这是MFC对象能够在DLL和主应用程序之间正确通信的关键。 ```cpp // 在头文件中 class DECLARE_DYNAMIC(CMyExportedClass) { public: CMyExportedClass(); virtual ~...

    VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用例程。(里面包含MFC 扩展库何规则库两个例程)

    首先,我们需要理解MFC DLL的两种类型:MFC扩展DLL和MFC常规DLL。MFC扩展DLL允许我们在DLL中使用MFC的C++对象,而MFC常规DLL则将MFC类的实现封装在DLL中,调用者通过接口来使用。在这个例子中,"MFCLibrary2"可能是...

    MFC DLL的编写和调用示例

    - MFC DLL有三种类型:常规DLL、扩展DLL和MFC应用DLL。这里我们讨论的是MFC应用DLL,它与MFC应用程序共享同一个MFC库。 - 使用Visual Studio创建MFC DLL项目,选择"Win32 Dynamic-Link Library",然后在MFC选项中...

    MFCDLL0.rar MFC项目封装dll,并完成调用

    MFCDLL0.rar是一个包含MFC(Microsoft Foundation Classes)项目的压缩包,该项目的主要目标是将MFC界面功能封装到一个动态链接库(DLL)中,以便其他应用程序能够方便地调用这些功能。MFC是微软提供的C++类库,用于...

    创建和使用一个MFC DLL的资源

    MFC DLL分为两种主要类型:普通MFC DLL和扩展MFC DLL。普通MFC DLL是标准的DLL,它使用MFC类库但不包含MFC的初始化代码。而扩展MFC DLL则包含了MFC的初始化代码,可以创建和管理自己的MFC对象,且与主应用程序共享...

    规则mfc dll使用的一个例子( 本dll可以创建对话框)

    本示例中的"规则MFC DLL"是一种特别设计的动态链接库,它允许在运行时被其他应用程序加载和调用,用于创建和管理对话框。对话框在Windows程序中经常用于与用户进行交互,展示信息或收集输入数据。 创建MFC DLL的...

    计算器 包含基本MFCDLL

    这个压缩包“计算器 包含基本MFCDLL”显然包含了一个基于MFC开发的计算器程序以及必要的MFC动态链接库。 MFC库的核心概念是“类”,它封装了Windows API中的许多函数和结构。例如,CWinApp类代表应用程序,CWnd类...

    MFCDLL2017.zip

    MFCDLL2017.zip 是一个压缩包文件,它包含了Visual Studio 2017开发过程中所需的MFC(Microsoft Foundation Class)库文件。MFC是微软为Windows平台开发的应用程序提供的一种C++类库,它封装了Windows API,使得...

    MFC规则DLL(详细介绍dll)

    MFC规则DLL是指在VC++环境下使用MFC框架编写的动态链接库,它可以分为静态链接到MFC的规则DLL和动态链接到MFC的规则DLL两类,并且可以设置其类型、是否支持自动化技术、Windows Sockets等功能。创建MFC规则DLL的过程...

    MFC DLL 窗口示例程序代码

    MFC DLL主要有两种类型:常规DLL和扩展DLL。常规DLL使用MFC作为静态库,而扩展DLL则与MFC共享库链接,使得DLL可以直接访问MFC类。在这个示例中,很可能使用的是扩展DLL,因为它们通常用于创建包含MFC对象(如窗口)...

    c#调用mfc共享dll 源码

    在MFC中,有两种类型的DLL:扩展DLL和常规DLL。对于共享功能,我们通常使用常规DLL。创建MFC常规DLL时,我们需要在Visual Studio中选择MFC DLL模板,定义接口函数,并确保所有的依赖项都包含在DLL中。这些接口函数将...

    MFC DLL的生成和调用实例

    1. 打开VS2012,选择文件-新建-项目-MFC DLL,在名称栏中输入工程命名OneDLL,在位置栏中选择存放工程文件的路径-确定-点击下一步-DLL类型:使用共享MFC DLL的规则DLL-点击完成。 2. 在生成的项目中,我们感...

    mfc创建DLL

    在这个“mfc创建DLL”的主题中,我们将深入探讨如何使用MFC构建这两种类型的DLL,以及如何在其他项目中使用这些DLL。 首先,让我们了解创建常规MFC DLL的步骤。常规MFC DLL 是一个与MFC静态链接的库,这意味着它...

    MFCDLL回掉函数小例子

    MFCDLL回掉函数是Microsoft Foundation Class (MFC) 库中用于实现动态链接库(DLL)与应用程序之间通信的一种技术。在这个小例子中,我们将深入探讨如何在Visual Studio 2008环境下创建和使用MFCDLL回掉函数。 首先,...

    Mfc加载Dll Dlg

    在MFC中,DLL有两种主要类型:MFC扩展DLL和MFC常规DLL。本例中我们关注的是MFC扩展DLL,因为它允许直接使用MFC类。 首先,创建MFC扩展DLL工程。在Visual Studio中,选择"文件" > "新建" > "项目",然后在模板中选择...

    将MFC资源文件打包成dll

    这篇博文详细介绍了如何将MFC资源文件转换为DLL,便于其他程序调用。下面,我们将深入探讨这个过程,并解析相关的知识点。 首先,了解DLL(Dynamic Link Library)是关键。DLL是一种共享库,它包含可由多个执行程序...

Global site tag (gtag.js) - Google Analytics