dynamic链接库

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

谢谢

整个事情,但不用担心,它不会重复加载的DLL一遍又一遍,有一个实例的所有程序使用它…. DLL的另一个名字是如此….或共享对象,和这是整个点,分享。

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

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

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

不要担心这一点,当你“加载”一个DLL,它实际上只是一个映射的内存文件; Windows操作系统使用页面错误机制按需导入页面; 所以如果你只使用了一小段DLL,那你实际上并不会把整个事情搞错。

只有你在这个DLL中使用的函数是必需的,不要担心内存的痉挛,因为大多数这些DLL是标准的,并不是单独的,它们是动态的,只是你的代码使用的某些函数被加载的原因,而不是整个DLL。

希望这有助于,最好的问候,汤姆。