成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 后端
本文簡要介紹了VC中DLL的創(chuàng)建及調用方法的實際操作。

方法一:

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

此中只有實際才操作,而無相關理論   

²             DLL的創(chuàng)建   

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

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

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

dllexport表示這個函數(shù)是由外部調用的。  

由于是否帶參數(shù),要影響到外部調用的方式,因此,我們再聲明一個帶參數(shù)的函數(shù):  

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

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

²             DLL的調用  

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

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

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

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

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

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

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

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

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

然后以類型MYWENT聲明變量既可調用,如下:   

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

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

方法二:

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

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

【編輯推薦】

  1. C#自定義事件步步 通
  2. 如何在C#中使用存儲過程(SQL Server 2000)
  3. 存儲過程自動轉成C#源碼過程
  4. C#事件處理和自定義事件
  5. 通過C#反射特性查看自定義特性
責任編輯:book05 來源: 賽迪網(wǎng)
相關推薦

2009-08-05 09:09:14

C#調用VC DLL接

2009-08-05 16:49:42

C#中調用dll

2011-09-01 13:43:23

VC調用SQL Ser

2009-08-05 16:41:36

C#調用VC dll

2009-08-05 09:22:43

C#調用VC DLL

2009-06-17 13:19:50

Java調用DLL

2009-08-03 12:57:27

C#調用DLL

2009-12-14 16:44:56

Ruby調用DLL

2009-09-02 17:16:01

冒泡排序

2011-07-13 11:20:55

VC++ODBC

2009-08-05 15:04:14

C# dll注入

2009-08-05 09:40:02

C#調用DLL函數(shù)

2009-08-05 09:30:39

C#調用DLL函數(shù)

2011-04-08 09:52:44

C++C#DLL

2010-01-15 16:12:40

VB.NET調用DLL

2011-08-10 17:00:45

DB2數(shù)據(jù)庫存儲過程

2014-06-19 10:59:10

AndroidEclipse公共庫

2017-09-04 11:48:56

MybatisOracle存儲過程

2009-08-06 18:02:22

存儲過程

2009-12-30 14:44:04

Silverlight
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线观看视频 | 欧美视频一级 | 欧美性成人 | 久久久精 | av天天澡天天爽天天av | 一区二区三 | 日韩一区二区三区在线 | 精品影院 | 97久久精品午夜一区二区 | 99久久精品免费看国产四区 | 精品国偷自产在线 | 国产成人福利在线观看 | 精品久久久久久亚洲精品 | 狠狠爱免费视频 | 免费观看羞羞视频网站 | 91五月天 | 天天操天天射综合 | 久久这里有精品 | 91高清视频| 日韩高清国产一区在线 | 中文字幕免费 | 国产成人精品免高潮在线观看 | 国产三级 | 日韩欧美亚洲 | 成人不卡 | 国产成人99久久亚洲综合精品 | 综合网视频 | 人干人人 | 99国内精品| 日韩亚洲一区二区 | 激情五月婷婷综合 | 高清视频一区 | 午夜网| 亚洲欧洲在线观看视频 | 欧美一级欧美一级在线播放 | 亚洲成人综合社区 | 日韩欧美在线视频 | 91精品久久久久 | 欧美一级黄色网 | 成人综合一区 | 亚洲久视频|