VC 6.0支持的三种dll

Non-MFC Dlls(非MFC dll);指的是不用MFC的类库结构,直接用C语言写的DLL,其输出函数一般是标准的C接口,能被非MFC和MFC编写的应用程序调用。可以用“Win32 应用程序向导”创建非 MFC DLL 项目。

Regular Dlls(MFC正规DLL),使用“MFC DLL 向导”创建,又分为静态链接和动态链接两种。

Extension Dlls(MFC扩展DLL),使用“MFC DLL 向导”创建,始终动态链接MFC。

下面来自MSDN--确定要使用的dll的类型

如果 DLL 要使用 MFC,且将由 MFC 或非 MFC 应用程序使用,则必须生成动态链接到 MFC 的规则 DLL 或静态链接到 MFC 的规则 DLL。大部分情况下可能需要使用动态链接到 MFC 的规则 DLL,因为这种 DLL 的文件大小要小得多,且使用共享 MFC 版本会节省大量内存。如果是静态链接到 MFC,则由于 DLL 会加载自己的私有 MFC 库代码副本,DLL 的文件大小会较大,且有可能占用额外的内存。

生成动态链接到 MFC 的 DLL 要比生成静态链接到 MFC 的 DLL 快,因为前者不需链接 MFC 本身。在链接器必须压缩调试信息的调试版本中尤其如此。通过与已经包含调试信息的 DLL 链接,DLL 中将只有很少的调试信息需要压缩。

动态链接到 MFC 的一个缺点是必须用 DLL 发布共享 DLL:MFCx0.DLL 和 MSVCRT.DLL(或类似的文件)。MFC DLL 可随便重新发布,但仍必须在安装程序中安装 DLL。另外必须交付 MSVCRT.DLL,它包含程序和 MFC DLL 本身都要使用的 C 运行时库。

如果 DLL 仅由 MFC 可执行文件使用,则可以选择生成规则 DLL 或扩展 DLL。如果 DLL 实现从现有 MFC 类派生的可重用类,或如果需要在应用程序和 DLL 之间传递 MFC 派生的对象,则必须生成扩展 DLL。

如果 DLL 动态链接到 MFC,则可能要用 DLL 重新发布 MFC DLL。当在多个可执行文件之间共享类库以节省磁盘空间和最小化内存使用时,此结构尤其有用。

时间: 2024-08-31 13:05:05

VC 6.0支持的三种dll的相关文章

VC++ 6.0如何创建与调用动态链接库

1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终生成的EXE文件中. 动态链接库:dll不必被包含在最终的EXE中,EXE文件执行时可以动态地引用和卸载DLL文件. 同时,静态链接库中不能再包含其他的动态链接库或静态库,而动态链接库中可以包含其他的动态或静态库. 2.VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库.MFC规则DLL和MFC扩展DLL.DLL导出函数(或变量.类)可供应用程序调

XHTML三种文件类型声明

 XHTML定义了三种文件类型声明. 最普遍使用的是XHTML Transitional.  <!DOCTYPE>是强制使用的. 一个XHTML文档有三个主要的部分: DOCTYPE  Head  Body  基本的文档结构是这样的: <!DOCTYPE ...><html><head><title>... </title></head><body> ... </body></html>

[WCF权限控制]WCF的三种授权模式

前面的两篇文章(<从两个重要的概念谈起:Identity与Principal[上篇]>和<从两个重要的概念谈起:Identity与Principal[下篇]>)主要探讨基于安全主体的授权.通过这些介绍我们知道:如果我们在实施授权的时候,当前线程的安全主体能够被正确设置,我们就可以正确地完成授权.基于相同的原理,对于WCF的服务授权,如果正确的安全主体能够在服务操作被执行之前被正确设置到当前线程,借助于这个安全主体,我们不但可以采用命令式编程的方式将授权逻辑写在相应的操作中,也可以采

IIS6.0支持PHP的三种配置方式的优缺点

在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1.CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求.这样,当用户请求数量非常多时,会大量占用系统的资源,如内存.CPU时间等,造成效能低下. 2.ISAPI(Inte

用VC 6.0实现串行通信的三种方法

摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控. ---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.依据不同的条件实现对串口的灵活编程控制是我们所需要的. ---- 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制

c# 4 0-C#调用VC++6.0的dll中问题

问题描述 C#调用VC++6.0的dll中问题 这是vc++中头文件#define GTDLL_API extern ""C"" __declspec(dllimport) short __stdcall我在C#中引用[DllImport(""GT400.dll"")] private extern static short GT_SetPos(int pos); 调用函数 private void SMotion() //S

style-.net framework 4.0中WPF的checkbox控件的三种状态样式变更

问题描述 .net framework 4.0中WPF的checkbox控件的三种状态样式变更 当前使用.Net Framework 4.0 WPF开发一个界面,需要使用CheckBox的控件的isThreeState= true ,设置为三种状态,分别是未点击时白框,单击时显示对勾,再单击时显示中间一个小蓝框.分别对应checked值为false, true和 null. 我需要的是,如何装饰checked值为null时,其显示效果由蓝色框更换为一个红色叉的效果. 谢谢.

xclient-XClient 使用什么软件编译,在VC++ 6.0种怎么无法打开

问题描述 XClient 使用什么软件编译,在VC++ 6.0种怎么无法打开 XClient 如何编译,在VC++ 6.0种怎么无法打开.vs2010能够编辑吗?

BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)_javascript技巧

Bootstrap 轮播(Carousel)插件是一种灵活的响应式的向站点添加滑块的方式.除此之外,内容也是足够灵活的,可以是图像.内嵌框架.视频或者其他您想要放置的任何类型的内容. 因为最近开发的项目涉及到移动设备上的 HTML5 开发,其中需要实现轮播效果.然后最快捷的方式,你知道的(Bootstrap),然后原生的 Bootstrap 的 carousel.js 插件并没有支持手势. 然后......自己想办法呗,再然后,就有下面3种解决方案 : jQuery Mobile (http:/