91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VC中DLL的創建及調用方法分享

發布時間:2021-08-05 21:27:15 來源:億速云 閱讀:307 作者:chen 欄目:編程語言

這篇文章主要講解了“VC中DLL的創建及調用方法分享”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“VC中DLL的創建及調用方法分享”吧!

方法一:

VC中DLL的創建及調用方法  

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

²             DLL的創建  

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

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

extern   “c”   __declspec(dllexport)   void   go()      {     //code……     }

dllexport表示這個函數是由外部調用的。  

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

extern   “c”   __declspec(dllexport)   void   went(CString   str)       {        //code……         }

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

²             DLL的調用  

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

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

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

獲得句柄后,下面要獲得函數地址以便執行它。有如下語句:  

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

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

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

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

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

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

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

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

方法二:

VC中DLL的創建及調用方法 

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

感謝各位的閱讀,以上就是“VC中DLL的創建及調用方法分享”的內容了,經過本文的學習后,相信大家對VC中DLL的創建及調用方法分享這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vc
AI

西充县| 邹平县| 桐柏县| 揭西县| 拉萨市| 马尔康县| 潼南县| 和林格尔县| 新邵县| 无锡市| 通州市| 永靖县| 偃师市| 外汇| 上栗县| 叶城县| 玉山县| 怀仁县| 团风县| 葵青区| 会同县| 长宁县| 平谷区| 潞城市| 永嘉县| 阳高县| 抚宁县| 保德县| 徐水县| 柳河县| 博乐市| 宁陕县| 乐陵市| 桦南县| 石屏县| 凌云县| 安图县| 吉隆县| 延吉市| 汾西县| 呼玛县|