我知道当加载应用程序时,动态链接库会加载到内存中,引用由操作系统加载程序解析。例如,在windows kernel32.dll,user32.dll和gdi32 dll中,所以如果我的应用程序引用kernel32.dll中的函数,例如CreateWindow,那么整个dll必须在进程中加载,或者只是部分的dll的?
由于
答案 0 :(得分:2)
整个事情,但不要担心,它不是一遍又一遍地重新加载dll,所有使用它的程序都有一个实例.... dll的另一个名称是......或者共享对象,这就是分享的重点。
答案 1 :(得分:1)
您引用一个函数,就可以得到整个DLL。您不能只加载DLL的一部分。
这很烦人,因为你得到所有的Shell32.dll只是为了找到别人的主目录所在。叹息。
答案 2 :(得分:1)
不要太担心这个,当你“加载”DLL时,它实际上只是一个映射的内存文件; Windows操作系统使用页面错误机制按需引入页面;因此,如果您只使用一小部分DLL,那么您实际上并不会对整个问题造成错误。
答案 3 :(得分:-1)
只需要在该DLL中使用的函数,不要担心内存占用,因为大多数这些DLL都是标准的,而不仅仅是动态的,这就是为什么只加载代码使用的某些函数的原因,而不是整个dll。
希望这有帮助, 最好的祝福, 汤姆。