日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
VC中DLL的創(chuàng)建及調(diào)用方法介紹

方法一:

創(chuàng)新互聯(lián)建站致力于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過(guò)標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場(chǎng)競(jìng)爭(zhēng)中脫穎而出。 選擇創(chuàng)新互聯(lián)建站,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!

VC中DLL的創(chuàng)建及調(diào)用方法  

此中只有實(shí)際才操作,而無(wú)相關(guān)理論   

2             DLL的創(chuàng)建   

首先,用VC集成開(kāi)發(fā)界面中的“新建”,新建一個(gè)項(xiàng)目。無(wú)論是VC6.0還是VC.NET,都有建立DLL項(xiàng)目的選項(xiàng)。只不過(guò)有些稍有不同,例如VC.NET中就有ISAPI   DLL,擴(kuò)展存儲(chǔ)過(guò)程DLL等,這些都不在討論的范圍。例如我們建立了一個(gè)用靜態(tài)連接MFC庫(kù)的DLL項(xiàng)目,名稱為mydll  

然后,編輯mydll.cpp文件,在其中加入我們自己的函數(shù)void   go()。注意,不需要在mydll.h中聲明它,而需要將函數(shù)頭變成如下樣子:  

 
 
 
  1. extern   “c”   __declspec(dllexport)   void   go()     
  2.  {     
  3. //code……     
  4. }    

dllexport表示這個(gè)函數(shù)是由外部調(diào)用的。  

由于是否帶參數(shù),要影響到外部調(diào)用的方式,因此,我們?cè)俾暶饕粋€(gè)帶參數(shù)的函數(shù):  

 
 
 
  1. extern   “c”   __declspec(dllexport)   void   went(CString   str)     
  2.   {     
  3.    //code……     
  4.     }   

OK,下面編譯連接形成mydll.dll文件。  

2             DLL的調(diào)用  

好,下面我們就用VC寫(xiě)個(gè)程序調(diào)用它。在調(diào)用的函數(shù)中,首先要獲得DLL的句柄,有如下語(yǔ)句:  

 
 
 
  1. HINSTANCE           dllinstance;     
  2. dllinstance=::LoadLibrary(strDllUrl);     
  3. if(dllinstance==NULL)   AfxMessageBox("can't   open   dll   file");    

其中strDllUrl是mydll.dll路徑的字符串,這樣程序才能找到它。::LoadLibrary獲得參數(shù)標(biāo)識(shí)的DLL文件的句柄。  

獲得句柄后,下面要獲得函數(shù)地址以便執(zhí)行它。有如下語(yǔ)句:  

 
 
 
  1. FARPROC     proc;     
  2. proc=GetProcAddress(dllinstance,"go");     
  3.  if(proc==NULL)   AfxMessageBox("can't   find   function");     
  4. else   proc();    

FARPROC是一個(gè)遠(yuǎn)程過(guò)程指針,通過(guò)GetProcAddress獲得函數(shù)的地址。它的兩個(gè)參數(shù)就是dll文件句柄和函數(shù)的名字了。  

然后FARPROC就可以和go一樣的使用了,它就是go   ,go   就是它。  

而對(duì)于帶參數(shù)的DLL中的函數(shù),調(diào)用方法有所不同。因?yàn)閷?duì)函數(shù)的調(diào)用是通過(guò)對(duì)它地址的引用進(jìn)行的,這樣,傳入?yún)?shù)對(duì)不對(duì),在函數(shù)調(diào)用程序的編譯和聯(lián)接過(guò)程中,無(wú)法知道其正確性。因此,要在調(diào)用程序中對(duì)DLL中帶參數(shù)的函數(shù)做個(gè)聲明,如mydll中的went,我們要做個(gè)聲明如下:   

 
 
 
  1. typedef   void   (FAR   __cdecl   *MYWENT)(CString);    

然后以類(lèi)型MYWENT聲明變量既可調(diào)用,如下:   

 
 
 
  1. MYWENT   myproc;     
  2. myproc   =(MYWENT)GetProcAddress(dllinstance,"go");     
  3. if(myproc   ==NULL)   AfxMessageBox("can't   find   function");     
  4. else   myproc   (“o-----yeah---------”);    

注意聲明的時(shí)候呢,由于DLL中WENT的定義為C語(yǔ)言調(diào)用規(guī)范,因此MYWENT前一定要用__cdecl,而VC中常用的__stdcall是PASCAL調(diào)用規(guī)范,不可以的。一定要注意。  

方法二:

VC中DLL的創(chuàng)建及調(diào)用方法  

New->MfcWiazard.dll   一路下去,就會(huì)生成一個(gè)了(略)。

【編輯推薦】

  1. C#自定義事件步步 通
  2. 如何在C#中使用存儲(chǔ)過(guò)程(SQL Server 2000)
  3. 存儲(chǔ)過(guò)程自動(dòng)轉(zhuǎn)成C#源碼過(guò)程
  4. C#事件處理和自定義事件
  5. 通過(guò)C#反射特性查看自定義特性

文章題目:VC中DLL的創(chuàng)建及調(diào)用方法介紹
當(dāng)前路徑:http://m.5511xx.com/article/djhcihi.html