Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482167
  • 博文数量: 35
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1234
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-06 22:48
文章分类

全部博文(35)

文章存档

2008年(35)

我的朋友

分类: WINDOWS

2008-04-07 20:09:57

3个最重要的DLL:
Kernel32.dll:包含用于管理内存,进程和线程的各个函数;
User32.dll:包含执行用户界面任务的各个函数;
GDI32.dll:用于图形和显示文本的各个函数;

----------------------------------
DLL使用时存在问题:应用程序在销售时,附带的DLL文件,应该尽量少一些,因为:比如有100DLL,这样,应用程序的初始化时间会长得吓人,因为系统必须打开100个磁盘文件,程序才能执行它的操作。

----------------------------------

DLL有助于节省内存,如果有两个或多个应用程序使用同一个DLL,那么该DLL的页面只需要放入RAM(内存)一次(如:C++运行库);如果所有的应用程序都链接到这个“静态库static Library”,某些函数代码要多次存于内存中,但是,如果所有这些应用程序链接到DLL C/C++ RUNTIME Library,那些函数的代码就只需要放入内存一次。

----------------------------------

静态加载 and 动态加载:
应用程序要调用DLL中的函数之前,DLL文件必须要映射到进程地址空间中,2种方法:
1.加载时隐含链接:静态加载
2.运行期的显示链:runtime library(动态加载)

----------------------------------

EXE程序不一定能释放DLL函数所分配的内存空间
可以释放: EXE和DLL都链接到DLL的C/C++ runtime library
不能释放: 其中一个或两个DLL都链接到static library

----------------------------------

static link library: 无需加载,lib包含实际代码,link时合并进用户程序,.lib(用户需要的二进制文件)

dynamic link library: static load,启动时候隐式加入,lib包含接口定义,代码独立为.dll, .lib .dll,静态加载也就是dll的隐式加载是在应用程序启动之前就已经加载完的!

dynamic link library:dynamic link library使用时通过系统函数显示载入,.lib接口定义,代码独立为.dll, .dll .lib,显式加载是在运行期加载的!


----------------------------------

如果不使用动态加载DLL的话,可以使用静态加载,不过,这需要事先得到LIB文件和.H文件,如果这三个文件都有的话,那就可以很方便的加载DLL了,方法如下:

如何加载DLL
1(配置头文件路径):选择项目->属性->C/C++-》常规-》附加包含目录:设置引用头文件路径
2(配置DLL和Lib文件路径):选择项目->属性->连接器-》常规-》附加库目录:设置DLL路径
3(加载Lib文件):选择项目->属性->连接器-》输入-》附加依赖项:输入要加载的Lib文件名(加载多个Lib文件时,以回车为分隔符)
4(该主应用程序.exe的生成目录,和要加载的DLL、Lib放在同一目录):选择项目->属性->连接器-》常规-》输出文件

-----------------------------------

lib有两种,一种是内部有代码的,这种长度较长,比如C++运行库,它就没有DLL,直接提供LIB文件件,还有一种是生成DLL时附带生成的LIB,它内部不含代码,仅是为链接工作所做的。没有用,因为内部不含代码,你一定要用DLL,如果你不想DLL被别人用,可以将DLL作为一个资源放入EXE文件中。




阅读(951) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-02-04 10:31:06

上面说的这个方法很好,这样的在线阅读心得笔记论坛值得多关注,谢谢了!

chinaunix网友2009-02-04 10:30:47

上面说的这个方法很好,这样的在线阅读心得笔记论坛值得多关注,谢谢了!

chinaunix网友2009-02-04 10:29:37

书下载后,还要看,看了还要作笔记,更要用自己的语言写出自己的心得理解,更重要是要发表出来和大家共享,互通有无,加快阅读速度+加深理解+加固记忆。

chinaunix网友2009-02-04 02:15:56

我们这里已经有了此书的专门主题 到这里来,大家一起发表评论,可以针对某节,甚至某段来评论。 有时看书,会半天才看懂一段话,也许已经早有朋友看懂了,也许他早已经发表在我们的网站了,大家一起来看看! 这两本书我都看过,WINDOWS程序设计是介绍用WIN32 API编写用户级程序,主要是介绍API的使用,让你习惯这种编写规则。 后者是介绍更高级的WIN32 API,最主要是介绍底层的一些东西,让你掌握更强大的功能。 http://www.nba5i.com/bbsxp/ShowPost.asp?ThreadID=311