2013-04-11 85 views
1

我知道如何實現靜態鏈接和運行時dll鏈接,但我更感興趣的是爲什麼在靜態dll鏈接中需要dll的LIB(靜態庫)?通常LIB注意到,但代碼(方法實現)的容器,但比較靜態DLL鏈接和運行時DLL鏈接(LoadLibrary,GetProcAddress ...)我得到的印象是,LIB用於以某種方式獲取DLL程序地址?也許我完全錯了,我不知道..爲什麼在C++靜態DLL鏈接中使用L​​IB?

+0

http://en.wikipedia.org/wiki/Dynamic-link_library#Import_libraries – 2013-04-11 09:07:17

+4

你是對的。使用靜態庫的LIB文件包含代碼。使用動態庫(DLL)時,LIB文件僅包含鏈接器在DLL中查找函數所需的信息。 – 2013-04-11 09:08:25

+0

Thx。這就是我想知道的。 – Tracer 2013-04-11 09:10:43

回答

0

與DLL一起使用的LIB庫包含「存根」,用於將您編寫的代碼與DLL中的代碼「連接」。通常,它只是共享庫中實際代碼的「跳轉指令」。它還包含對要使用的實際共享庫的引用,以便將可執行文件引入內存的加載程序可以在此時加載相關的共享庫。

當您使用運行時鏈接來使用共享庫時,代碼負責加載庫並解析正在使用共享庫中的哪些函數。

相關問題