做dll创建时有三种类型选择,分别做怎么解释啊多谢啊

做dll创建时有三种类型选择,分别做如何解释啊?谢谢啊!

做dll创建时有三种类型选择,分别做如何解释啊?谢谢啊!

regular dll with MFC starically linked

regular dll useing shared MFC DLL

MFC Extension DLL (use shared MFC DLL)

------解决方案--------------------

http://blog.hc360.com/portal/personShowArticle.do?articleId=64283

------解决方案--------------------

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

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 所提供,不用自己显式的写出来。

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

------解决方案--------------------

可以到www.vehome.net中下载一个关于dll的chm文件,里面有例子也有关于这些基本的东西的讲解。

做dll创建时有三种类型选择,分别做如何解释啊?谢谢啊!

做dll创建时有三种类型选择,分别做如何解释啊?谢谢啊!

regular dll with MFC starically linked

regular dll useing shared MFC DLL

MFC Extension DLL (use shared MFC DLL)

------解决方案--------------------

http://blog.hc360.com/portal/personShowArticle.do?articleId=64283

------解决方案--------------------

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

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 所提供,不用自己显式的写出来。

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

------解决方案--------------------

可以到www.vehome.net中下载一个关于dll的chm文件,里面有例子也有关于这些基本的东西的讲解。


相关内容

  • 华为c++面试题及答案
  • 华为面试题1 一.请填写BOOL , float, 指针变量 与"零值"比较的 if 语句.(10分) 请写出 BOOL flag 与"零值"比较的 if 语句.(3分) 标准答案: 请写出 float x 与"零值"比较的 if 语句.( ...

  • 关于appdomain, assembly, 进程,线程的概念体会
  • AppDomain是CLR的运行单元,它可以加载Assembly.创建对象以及执行程序. AppDomain是CLR实现代码隔离的基本机制. 每一个AppDomain可以单独运行.停止:每个AppDomain有自己默认的异常处理: 一个AppDomain的运行失败不会影响到其他的AppDomain. ...

  • win32下delphi全局钩子的实现的关键技术
  • 自15年前Windows 3.1推出以来,Win32全局钩子的实现始终是32位Windows程序设计中最富挑战性的课题之一.全局钩子可以捕获系统向应用程序发送的消息(比如键盘和鼠标操作.系统设置改变等等),因而被广泛地应用在各种商用应用软件中,其中又以金山词霸的"屏幕取词"功能最 ...

  • 打印[华为系列]华为笔试题目
  • 为笔试题 By 半匹狼 发表于 2007-6-15 0:38:00 华为从事通信网络技术与产品的研究.开发.生产与销售,是中国电信市场的主要供应商之一,并已成功进入全球电信市场. 1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a ...

  • 运动控制卡在LabVIEW的应用
  • 运动控制卡在LabVIEW的应用 摘 要:介绍了一种在LabVIEW平台上使用普通运动控制卡实现快速开发多轴运动控制程序的方法.该方法首先应用运动普通控制卡提供的函数库编译成通用动态链接库文件,然后使用LabVIEW与外部代码进行连接的动态连接库机制调用这个文件,实现实时的运动控制.实践证明,该方法 ...

  • 学生信息管理
  • 天津职业技术师范大学 Tianjin University of Technology and Education <数据库系统概论> 课程设计报告 学生信息管理系统 专 业: 计算机科学与技术 班级学号: 学生姓名: 指导教师: 二〇一一年六月 一.实验名称: 学生信息管理系统 张彩娟 ...

  • B 全角与半角有什么区别
  • B 全角与半角有什么区别?各在什么情况下使用? 全角占两个字节,半角占一个字节. 半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节 在编程序的源代码中只能使用半角标点(不包括字符串内部的数据) 全角就是字母和数字等与汉字占等宽位置的字 ...

  • 本地连接的属性成灰色
  • 1.点击开始,打开"运行"在运行栏中输入"gpedit.msc"(引号内的内容)然后确定,打开了组策略. 2.点击用户配置下的"管理模板"----网络----网络连接. 3.把"禁止访问LAN连接的属性"和"为 ...

  • net-framework微软认证考试题库
  • 你正在开发一个自定义事件处理去自动打印所有打开的文档.事件处理可以指定要打印的份 数.为此,你需要开发一个传递给事件处理程序的自定义事件参数类,你应该使用下面那个 代码段? A. public class PrintingArgs { private int copies; public Print ...