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

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

ID:50129923

大?。?4.23 KB

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

時(shí)間:2020-03-06

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

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

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

2、LL_H_*/C文件dllmain.c#include#includeDLLIMPORTvoidHelloWorld(){MessageBox(0,"HelloWorldfromDLL!","Hi",MB_ICONINFORMATION);}BOOLAPIENTRYDllMain(HINSTANCEhInst/*Libraryinstancehandle.*/,DWORDreason/*Reasonthisfunctionisbeingcalled.*/,LPVOIDreserved/*Notused

3、.*/){switch(reason){caseDLL_PROCESS_ATTACH:break;caseDLL_PROCESS_DETACH:break;caseDLL_THREAD_ATTACH:break;caseDLL_THREAD_DETACH:break;}/*ReturnsTRUEonsuccess,FALSEonfailure*/returnTRUE;}還有要注意的在.def文件中指定輸出的函數(shù),編譯生成了hello.dll文件DLL調(diào)用部分dllcall.c#include#include

4、h>#includeHINSTANCEhDLL;//定義DLL包柄typedefvoid(*func)();//定義函數(shù)指針原型funchello;//定義函數(shù)指針intmain(){if(hDLL==NULL)hDLL=LoadLibrary("hello.dll");//加載DLLhello=(func)GetProcAddress(hDLL,"HelloWorld");//獲取函數(shù)指針hello();FreeLibrary(hDLL);//釋放DLLreturn0;}編譯執(zhí)行/*c語(yǔ)言調(diào)用dll里的函數(shù)-例子2之文件

5、下載都5點(diǎn)了,還是睡不著,躺在床上想著該做點(diǎn)撒,于是乎,開始查找了下資料,大致弄清楚了c里怎么調(diào)用dll里的函數(shù),就寫了個(gè)文件下載的例子,很簡(jiǎn)單,調(diào)用系統(tǒng)本身的UrlMon.dll里的URLDownloadToFileA函數(shù),之前的例子一是過程的調(diào)用,現(xiàn)在這個(gè)是函數(shù)的調(diào)用,都很簡(jiǎn)單。*/#include#includetypedefint(*MYFUNC)(PVOID,char*,char*,int,char*);/*函數(shù)原型*/intmain(){HINSTANCELibHandle;MYFUNC

6、FUNCADD;chardllbuf[]="UrlMon.dll";charsysbuf[]="URLDownloadToFileA";/*函數(shù)名*/char*downfile="http://www.baidu.com/img/logo-yy.gif";/*過程要帶入的參數(shù)*/char*savefile="f:\c\baidu.gif";LibHandle=LoadLibrary(dllbuf);/*載入dll*/FUNCADD=(MYFUNC)GetProcAddress(LibHandle,sysbuf);/*獲取函數(shù)sysbuf的

7、地址*/(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)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。