2010-01-29 168 views
1

我知道動態鏈接庫在加載應用程序時加載到內存中,引用由操作系統加載程序解析。例如,在windows kernel32.dll,user32.dll和gdi32 dll中,所以如果我的應用程序在kernel32.dll中引用了一個函數,例如CreateWindow,那麼整個dll必須在進程中加載​​,或者只是部分dll的?動態鏈接庫

謝謝

回答

1

您引用一個函數,您會得到整個DLL。您不能只加載一部分DLL。

這很煩人,因爲你得到所有的Shell32.dll只是爲了找到某人的主目錄。嘆。

2

整個事情,但不用擔心,它不會重複加載DLL一遍又一遍,有一個實例,所有使用它的程序.... DLL的另一個名稱是如此....或共享對象,這就是要點,分享。

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

-1

只有你在DLL中使用的功能是必需的,不用擔心抽筋的記憶,因爲大多數這些DLL的是標準和孤獨,他們是動態的,這個理由只是某些功能不您的代碼使用加載,而不是整個DLL。

希望這會有所幫助, 最好的問候, 湯姆。

1

不要擔心這一點,當你「加載」一個DLL時,它實際上只是一個映射的內存文件; Windows操作系統使用頁面錯誤機制按需導入頁面;所以如果你只使用DLL的一小部分,你實際上並不會對整個事情造成錯誤。