国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 象州县| 无为县| 吴旗县| 札达县| 荣昌县| 修水县| 增城市| 凭祥市| 滁州市| 丹江口市| 含山县| 义马市| 加查县| 平谷区| 西乌珠穆沁旗| 故城县| 武邑县| 青铜峡市| 镇康县| 峨边| 迁西县| 长岭县| 伊金霍洛旗| 开封市| 宁陕县| 潞城市| 开阳县| 新巴尔虎右旗| 夏津县| 化德县| 潮安县| 湘西| 建昌县| 台北县| 黔西| 武定县| 兖州市| 诸城市| 屏东市| 梧州市| 马尔康县|