程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++常規DLL應用方式介紹

C++常規DLL應用方式介紹

編輯:C++入門知識

C++中的DLL應用在實際編程中是非常重要的一個基礎概念,掌握了這一應用對於我們程序開有著非常重要的作用。在這裡我們將會針對C++常規DLL做一個詳細介紹,希望能給大家帶來一些幫助。

C++常規DLL的建立與使用

1:導出函數

  1. __declspec(dllexport) void ShowDlg(void)  
  2. {  
  3. CDllDialog dllDialog;  
  4. dllDialog.DoModal ();  

2:修改.def文件,加上函數名稱

  1. ; DrawTestDll.def : Declares the module parameters for the DLL.  
  2.  
  3. LIBRARY "DrawTestDll"  
  4. DESCRIPTION 'DrawTestDll Windows Dynamic Link Library'  
  5.  
  6. EXPORTS  
  7. ; Explicit exports can go here 

3:將DLL文件復制到程序所在目錄

4:在程序裡調用DLL

  1. void CDllTestView::OnLButtonDown(UINT nFlags, CPoint point)  
  2. {  
  3. typedef void (*lpFun)(void);  
  4. HINSTANCE hDll; //DLL句柄  
  5. hDll = LoadLibrary("DrawTestDll.dll"); //加載DLL資源  
  6. if (NULL==hDll) //尋找順序,EXE所在目錄,工程所在目錄,System、windows目錄  
  7. {  
  8. MessageBox("DLL加載失敗");  
  9. }  
  10. lpFun addFun; //函數指針  
  11. addFun = (lpFun)GetProcAddress(hDll,"ShowDlg"); //得到函數ShowDlg的地址  
  12. if (NULL==addFun)  
  13. {  
  14. MessageBox("DLL中函數尋找失敗");  
  15. }  
  16. HINSTANCE exe_hinstance=AfxGetResourceHandle(); //得到主程序的實例句柄  
  17. AfxSetResourceHandle(hDll); //設置主程序的句柄為DLL實例利用DLL裡的資源)  
  18. addFun(); //調用函數  
  19. AfxSetResourceHandle(exe_hinstance);//重新設置主程序的實例句柄  
  20. FreeLibrary(hDll); //赦放DLL資源  

C++常規DLL中類的使用

1:DLL中添加新類

類的.h文件:
 

  1. //導出一個類(包括其方法、屬性)  
  2. class _declspec(dllexport) CDllClass {  
  3. public:  
  4. CDllClass(void);  
  5. void MSG(const char * const str);  
  6. }; 

類的.cpp文件:

  1. #include "stdafx.h"  
  2. #include "DllClass.h"  
  3.  
  4. CDllClass::CDllClass()  
  5. {  
  6. return;  
  7. }  
  8. void CDllClass::MSG(const char * const str)  
  9. {  
  10. MessageBox(NULL,str,"",MB_OK);  

2:將編譯好的DLL文件、Lib文件和類的頭文件復制到工程目錄

3:修改類的頭文件將dll的頭文件中為 dllexport,在應用文件中為dllimport)

  1. //導入一個類(包括其方法、屬性)  
  2. class _declspec(dllimport) CDllClass {  
  3. public:  
  4. CDllClass(void);  
  5. void MSG(const char * const str);  
  6. }; 

4:在調用類的實現函數的文件裡加上類的頭文件和Lib文件的引用

  1. #include "DllClass.h" //頭文件的引入,是程序可以定義類的對象  
  2. #pragma comment(lib,"DrawDll.lib") //具體函數的定義 

正常使用即可。以上就是對C++常規DLL的相關介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved