国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

動態(tài)連接庫(DLL)

2019-11-17 04:38:38
字體:
來源:轉載
供稿:網友
作者:雷神

  把C++的類寫進DLL里,單獨的編譯。程序運行時可以快速裝載并連接到DLL上,這樣叫做標準的模塊軟件。大大提高代碼的重用型。DLL是運行時的模塊。

  Win32 DLL答應導出全局變量,就象導出函數一樣。只要DLL申請內存,就從客戶程序的進程的內存堆中進行內存分配。

  DLL包含一個導出函數表,它包含了函數在DLL內的地址,但當客戶程序裝入DLL時并不知道要調用的函數地址,它是通過函數的符號化名字和序號來識別這些函數的。簡單的程序通常是一個EXE從一個或多個DLL導入函數;

  而實際上許多DLL調用了其他DLL里的函數。因此一個DLL可以同時有導入和導出。

  在DLL代碼中,我們必須顯示聲明導出函數在客戶方也應聲明對應的導入函數:

_declspec(dlleXPort) int MyFunction(int n); //DLL中
_declspec(dllimport) int MyFunction(int n); //exe

  可以用將 extern"c" 加在函數聲明的前面的方法來告訴編譯器-需要使用普通的函數名,以防編譯器產生其他語言不能使用的修飾名。

  連接DLL可以是隱式連接或顯式連接,隱式連接在客戶程序被裝載時裝載,顯式連接可以決定什么時候裝載或卸出,還答應我們在運行時決定裝載哪個DLL。

  DLL的入口點是DllMain。進程中的每一個DLL都有一個唯一的32位HINSTANCE值所標識。此外進程本身也有一個HINSTANCE值,所有這些實例句柄只有在進程內部有效,它代表了DLL或EXE的起始虛擬地址。進程(EXE)實例句柄幾乎總是0X400000,而裝入在默認基地址的DLL的句柄是0X10000000,假如有多個DLL,則每個都有不同的HINSTANCE值。

  獲得EXE的句柄用NULL參數調用Win32的GetModuleHandle函數,獲得DLL的句柄用DLL的名字做參數調用GetModuleHandle函數。
進入討論組討論。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 建阳市| 弥勒县| 中江县| 闻喜县| 吕梁市| 邵阳市| 永和县| 河北区| 汽车| 漾濞| 天祝| 垣曲县| 郁南县| 体育| 和政县| 历史| 丹巴县| 东城区| 梓潼县| 济宁市| 宜昌市| 宽城| 东宁县| 齐河县| 尼玛县| 红桥区| 安顺市| 南部县| 宝兴县| 福州市| 高青县| 林西县| 昌吉市| 黄大仙区| 图木舒克市| 固镇县| 中西区| 游戏| 武山县| 翁牛特旗| 西青区|