动态链接库

时间:2010-01-29 02:32:42

标签: windows

我知道当加载应用程序时,动态链接库会加载到内存中,引用由操作系统加载程序解析。例如,在windows kernel32.dll,user32.dll和gdi32 dll中,所以如果我的应用程序引用kernel32.dll中的函数,例如CreateWindow,那么整个dll必须在进程中加载​​,或者只是部分的dll的?

由于

4 个答案:

答案 0 :(得分:2)

整个事情,但不要担心,它不是一遍又一遍地重新加载dll,所有使用它的程序都有一个实例.... dll的另一个名称是......或者共享对象,这就是分享的重点。

http://en.wikipedia.org/wiki/Dynamic_link_library

答案 1 :(得分:1)

您引用一个函数,就可以得到整个DLL。您不能只加载DLL的一部分。

这很烦人,因为你得到所有的Shell32.dll只是为了找到别人的主目录所在。叹息。

答案 2 :(得分:1)

不要太担心这个,当你“加载”DLL时,它实际上只是一个映射的内存文件; Windows操作系统使用页面错误机制按需引入页面;因此,如果您只使用一小部分DLL,那么您实际上并不会对整个问题造成错误。

答案 3 :(得分:-1)

只需要在该DLL中使用的函数,不要担心内存占用,因为大多数这些DLL都是标准的,而不仅仅是动态的,这就是为什么只加载代码使用的某些函数的原因,而不是整个dll。

希望这有帮助, 最好的祝福, 汤姆。