2007-12-18 10:48 VC中的dll分析

简介: VC6.0 支持三种dll,如下 Non-MFC Dlls(非MFC dll);指的是不用MFC的类库结构,直接用C语言写的DLL,其输出函数一般是标准的C接口,能被非MFC和MFC编写的应用程序调用。

VC6.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。当在多个可执行文件之间共享类库以节省磁盘空间和最小化内存使用时,此结构尤其有用。

目录
相关文章
|
开发工具 Windows
[分享]总结:VC小知识!-1
说明: 获得notepad.exe的路径正规上来说用GetWindowsDirectory函数得到, 如果是调用 win95下的画笔,应该用访问注册表的方法获得其路径,要作成一个比较考究的程序,考虑应该全面点.
|
程序员 编译器 Linux
Unity与 DLL文件 ☀️| 什么是DLL✨?
📣前言 在之前的文章有介绍过so文件,那本篇文章就来介绍一些DLL文件吧! 提起DLL文件,大家肯定不会陌生,就算自己没编写生成过DLL文件,那也一定见过! Windows系统打开电脑C盘的System文件夹,往下一拉就会发现有超级多的带有.dll后缀的文件! 那DLL文件到底是个怎样的存在呢?本篇文章就来好好研究一下这个DLL文件究竟是个啥!
Unity与 DLL文件 ☀️| 什么是DLL✨?
|
C# .NET 开发框架
C# 版dll 程序集合并工具
原文:C# 版dll 程序集合并工具 C# 版dll 程序集合并工具      最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。
1108 0
|
开发工具 git
VC2010编译libwebsockets
1. 安装cmake: https://cmake.org/files/v3.6/cmake-3.6.0-win64-x64.msi 2. 下载libwebsocket源码: git clone https://github.
2273 0