C++中的DLL應用在實際編程中是非常重要的一個基礎概念,掌握了這一應用對於我們程序開有著非常重要的作用。在這裡我們將會針對C++常規DLL做一個詳細介紹,希望能給大家帶來一些幫助。
C++常規DLL的建立與使用
1:導出函數
- __declspec(dllexport) void ShowDlg(void)
- {
- CDllDialog dllDialog;
- dllDialog.DoModal ();
- }
2:修改.def文件,加上函數名稱
- ; DrawTestDll.def : Declares the module parameters for the DLL.
- LIBRARY "DrawTestDll"
- DESCRIPTION 'DrawTestDll Windows Dynamic Link Library'
- EXPORTS
- ; Explicit exports can go here
3:將DLL文件復制到程序所在目錄
4:在程序裡調用DLL
- void CDllTestView::OnLButtonDown(UINT nFlags, CPoint point)
- {
- typedef void (*lpFun)(void);
- HINSTANCE hDll; //DLL句柄
- hDll = LoadLibrary("DrawTestDll.dll"); //加載DLL資源
- if (NULL==hDll) //尋找順序,EXE所在目錄,工程所在目錄,System、windows目錄
- {
- MessageBox("DLL加載失敗");
- }
- lpFun addFun; //函數指針
- addFun = (lpFun)GetProcAddress(hDll,"ShowDlg"); //得到函數ShowDlg的地址
- if (NULL==addFun)
- {
- MessageBox("DLL中函數尋找失敗");
- }
- HINSTANCE exe_hinstance=AfxGetResourceHandle(); //得到主程序的實例句柄
- AfxSetResourceHandle(hDll); //設置主程序的句柄為DLL實例利用DLL裡的資源)
- addFun(); //調用函數
- AfxSetResourceHandle(exe_hinstance);//重新設置主程序的實例句柄
- FreeLibrary(hDll); //赦放DLL資源
- }
C++常規DLL中類的使用
1:DLL中添加新類
類的.h文件:
- //導出一個類(包括其方法、屬性)
- class _declspec(dllexport) CDllClass {
- public:
- CDllClass(void);
- void MSG(const char * const str);
- };
類的.cpp文件:
- #include "stdafx.h"
- #include "DllClass.h"
- CDllClass::CDllClass()
- {
- return;
- }
- void CDllClass::MSG(const char * const str)
- {
- MessageBox(NULL,str,"",MB_OK);
- }
2:將編譯好的DLL文件、Lib文件和類的頭文件復制到工程目錄
3:修改類的頭文件將dll的頭文件中為 dllexport,在應用文件中為dllimport)
- //導入一個類(包括其方法、屬性)
- class _declspec(dllimport) CDllClass {
- public:
- CDllClass(void);
- void MSG(const char * const str);
- };
4:在調用類的實現函數的文件裡加上類的頭文件和Lib文件的引用
- #include "DllClass.h" //頭文件的引入,是程序可以定義類的對象
- #pragma comment(lib,"DrawDll.lib") //具體函數的定義
正常使用即可。以上就是對C++常規DLL的相關介紹。