freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

動(dòng)態(tài)鏈接庫(kù)dll編程-文庫(kù)吧

2025-04-23 17:13 本頁(yè)面


【正文】 clspec( dllexport)關(guān)鍵字(對(duì)于函數(shù)和變量定義,加在最前面;對(duì)于 class定義,加在 class關(guān)鍵字后) 。 ?__declspec(dllexport) void ShowDlg(void) ?class _declspec(dllexport) class_name //導(dǎo)出類 ?這樣該函數(shù)和數(shù)據(jù)就會(huì)被添加到 ET中。使用這種方法函數(shù)將按名字 export。 __declspec(dllexport) (.def) 文件聲明 ? 為 DLL創(chuàng)建一個(gè) .DEF文件(模塊定義文件),并在 build該 DLL時(shí)使用這個(gè) .DEF文件。使用這種方法使你可以將函數(shù)按序號(hào) export。 ? 在 LINK選項(xiàng)卡中假如: /def: ? 將 。 ?。 : 導(dǎo)出 DLL函數(shù) LIBRARY dllTest EXPORTS add @ 1 ? .def文件的規(guī)則為: (1)LIBRARY語句說明 .def文件相應(yīng)的 DLL; (2)EXPORTS語句后列出要導(dǎo)出函數(shù)的名稱??梢栽?.def文件中的導(dǎo)出函數(shù)名后加 @n,表示要導(dǎo)出函數(shù)的序號(hào)為 n(在進(jìn)行函數(shù)調(diào)用時(shí),這個(gè)序號(hào)將發(fā)揮其作用); (3).def 文件中的注釋由每個(gè)注釋行開始處的分號(hào) (。) 指定,且注釋不能與語句共享一行。 庫(kù)的調(diào)試與查看 ?動(dòng)態(tài)鏈接庫(kù)中的導(dǎo)出接口可以使用Visual C++的 Depends工具進(jìn)行查看,用 Depends打開系統(tǒng)目錄中的 . DLL的調(diào)用方式 1. 隱式調(diào)用 : 1. 將 DLL工程生成的 .lib文件和 .dll文件拷入當(dāng)前工程所在的目錄,并在 *.cpp文件(的頂部添加: 2. pragma ment(lib,) OR 動(dòng)態(tài) 調(diào)用 ?特點(diǎn) :是完全由編程者用 API 函數(shù)加載和卸載 DLL,程序員可以決定 DLL 文件何時(shí)加載或不加載,顯式鏈接在運(yùn)行時(shí)決定加載哪個(gè) DLL 文件。 在建立的工程中添加 ,源代碼如下: /* 文件名: */ ifndef LIB_H define LIB_H extern C int __declspec(dllexport)add(int x, int y)。 endif /* 文件名: */ include int add(int x, int y){ return x + y。 } 調(diào)用 include include typedef int(*lpAddFun)(int, int)。 //宏定義函數(shù)指針類型 int main(int argc, char *argv[]) { HINSTANCE hDll。 //DLL句柄 lpAddFun addFun。 //函數(shù)指針 hDll = LoadLibrary(..\\Debug\\)。 if (hDll != NULL) { addFun = (lpAddFun)GetProcAddress(hDll, add)。 if (addFun != NULL) { int result = addFun(2, 3)。 printf(%d, result)。 } FreeLibrary(hDll)。 } DLL的 Export和 Import ?DLL的 export是指將 DLL中的函數(shù)和數(shù)據(jù)輸出到其它程式中,以供其使用。 DLL的 import是指使用 DLL的程式引入 DLL中的函數(shù)和數(shù)據(jù)。 ?DLL的 export DLL中包含有一個(gè)表,稱為export table(以下簡(jiǎn)稱 ET),其中包含了DLL中可以被外部程式使用的所有函數(shù)和數(shù)據(jù)的名字。 ?只有記錄在 ET中的函數(shù)和數(shù)據(jù)才可以被外部程式所使用(如果沒有 .DEF文件的話),其它所有沒有記錄在 ET中的函數(shù)和數(shù)據(jù)都被視為是 DLL私有的。 DllMain函數(shù) ?Windows在加載 DLL的時(shí)候,需要一個(gè)入口函數(shù),就如同控制臺(tái)或 DOS程序需要 main函數(shù)、WIN32程序需要 WinMain函數(shù)一樣。 ?在前面的例子中, DLL并沒有提供 DllMain函數(shù),應(yīng)用工程也能成功引用 DLL,這是因?yàn)閃indows在找不到 DllMain的時(shí)候,系統(tǒng)會(huì)從其它運(yùn)行庫(kù)中引入一個(gè)不做任何操作的缺省DllMain函數(shù)版本,并不意味著 DLL可以放棄DllMain函數(shù)。 ? BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) ? DllMain函數(shù)在 DLL被加載和卸載時(shí)被調(diào)用,在單個(gè)線程啟動(dòng)和終止時(shí), DLLMain函數(shù)也被調(diào)用 。 ? ul_reason_for_call指明了被調(diào)用的原因。原因共有 4種,即PROCESS_ATTACH、 PROCESS_DETACH、THREAD_ATTACH和 THREAD_DETACH,以 switch語句列出。 DLL導(dǎo)出變量 ? /* 文件名: */ ifndef LIB_H define LIB_H extern int dllGlobalVar。 endif /* 文件名: */
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1