c語(yǔ)言如何生成DLL文件.doc

c語(yǔ)言如何生成DLL文件.doc

ID:62033294

大?。?4.50 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2021-04-15

c語(yǔ)言如何生成DLL文件.doc_第1頁(yè)
c語(yǔ)言如何生成DLL文件.doc_第2頁(yè)
c語(yǔ)言如何生成DLL文件.doc_第3頁(yè)
資源描述:

《c語(yǔ)言如何生成DLL文件.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、開(kāi)發(fā)環(huán)境是DEVC++,采用C語(yǔ)言編寫(xiě)?創(chuàng)建一個(gè)DLL項(xiàng)目,項(xiàng)目名稱hello,DLL編寫(xiě)采用的是DEVC++中的示例代碼頭文件dll.h#ifndef_DLL_H_?#define_DLL_H_#ifBUILDING_DLL?#defineDLLIMPORT__declspec (dllexport)#else/*NotBUILDING_DLL */?#defineDLLIMPORT__declspec(dllimport)?#endif /* NotBUILDING_DLL*/?DLLIMPORT voidHello

2、Wo(hù)rld?。ǎ鰋id);#endif /*_DLL_H_*/C文件?dllmain.c#include〈stdio。h>#include<stdlib.h>DLLIMPORT?。鰋id HelloWorld (){????MessageBox(0, ”Hello World?。鎟om DLL?。躰”, "Hi”, MB_ICONINFORMATION);}?BOOLAPIENTRY DllMain(HINSTANCEhInst????/*Libraryinstancehandle.*/,????????????????

3、????????。腤ORD reason???????/*Reasonthisfunctionisbeing called.?。?,???????????????????????LPVOIDreserved????/*Not used。*/){???switch(reason)????{?????caseDLL_PROCESS_ATTACH:????????break;?????caseDLL_PROCESS_DETACH:????????break;????? caseDLL_THREAD_ATTACH:???????

4、break;????? caseDLL_THREAD_DETACH:???????break;????}???/*ReturnsTRUE on success,FALSEon failure */???returnTRUE;?}?還有要注意的在.def文件中指定輸出的函數(shù),編譯生成了hello。dll文件DLL調(diào)用部分?dllcall.c#include<windows.h〉?#include〈stdio.h>?#include〈stdlib.h>HINSTANCEhDLL;//定義DLL包柄?typedefvoid (

5、*func)();???//定義函數(shù)指針原型?funchello;?//定義函數(shù)指針intmain()?{??if(hDLL ==NULL)???? hDLL=LoadLibrary(”hello.dll”);??//加載DLL?hello=(func)GetProcAddress(hDLL,"HelloWorld");//獲取函數(shù)指針?hello();?Free(cuò)Library(hDLL);?//釋放DLL??return0;?}編譯執(zhí)行?/*c語(yǔ)言調(diào)用dll里的函數(shù)-例子2之文件下載都5點(diǎn)了,還是睡不著,躺在床上想著該

6、做點(diǎn)撒,于是乎,開(kāi)始查找了下資料,大致弄清楚了c里怎么調(diào)用dll里的函數(shù),就寫(xiě)了個(gè)文件下載的例子,很簡(jiǎn)單,調(diào)用系統(tǒng)本身的UrlMon.dll里的URLDownloadToFileA函數(shù),之前的例子一是過(guò)程的調(diào)用,現(xiàn)在這個(gè)是函數(shù)的調(diào)用,都很簡(jiǎn)單。*/#include〈WINDOWS.H>?。nclude<WINBASE。H>  typedefint(*MYFUNC)(PVOID,char*,char*,int,char*); /*函數(shù)原型*/intmain() { HINSTANCELibHandle;  MYFUNCF

7、UNCADD;    chardllbuf[]= "UrlMon.dll";    charsysbuf[] =”URLDownloadToFileA”;/*函數(shù)名*/   char*downfile= "http://www.baidu。com/img/logo—yy.gif”; /*過(guò)程要帶入的參數(shù)*/    char*savefile=”f:\c\baidu.gif";       LibHandle=LoadLibrary(dllbuf); /*載入dll*/  ?。疲誑CADD= (MYFUNC)GetPr

8、ocAddress(  LibHandle,sysbuf); /*獲取函數(shù)sysbuf的地址*/    (FUNCADD) (NULL,downfile,savefile,0,NULL);/*FUNCADD就相當(dāng)于函數(shù) URLDownloadToFileA 后面是參數(shù)*/}

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。