C++常規(guī)DLL應(yīng)用方式介紹
C++中的DLL應(yīng)用在實際編程中是非常重要的一個基礎(chǔ)概念,掌握了這一應(yīng)用對于我們程序開有著非常重要的作用。在這里我們將會針對C++常規(guī)DLL做一個詳細介紹,希望能給大家?guī)硪恍椭?/p>
C++常規(guī)DLL的建立與使用
1:導(dǎo)出函數(shù)
- __declspec(dllexport) void ShowDlg(void)
- {
- CDllDialog dllDialog;
- dllDialog.DoModal ();
- }
2:修改.def文件,加上函數(shù)名稱
- ; 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文件復(fù)制到程序所在目錄
4:在程序里調(diào)用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; //函數(shù)指針
- addFun = (lpFun)GetProcAddress(hDll,"ShowDlg"); //得到函數(shù)ShowDlg的地址
- if (NULL==addFun)
- {
- MessageBox("DLL中函數(shù)尋找失敗");
- }
- HINSTANCE exe_hinstance=AfxGetResourceHandle(); //得到主程序的實例句柄
- AfxSetResourceHandle(hDll); //設(shè)置主程序的句柄為DLL實例(利用DLL里的資源)
- addFun(); //調(diào)用函數(shù)
- AfxSetResourceHandle(exe_hinstance);//重新設(shè)置主程序的實例句柄
- FreeLibrary(hDll); //赦放DLL資源
- }
C++常規(guī)DLL中類的使用
1:DLL中添加新類
類的.h文件:
- //導(dǎo)出一個類(包括其方法、屬性)
- 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文件和類的頭文件復(fù)制到工程目錄
3:修改類的頭文件(將dll的頭文件中為 dllexport,在應(yīng)用文件中為dllimport)
- //導(dǎo)入一個類(包括其方法、屬性)
- class _declspec(dllimport) CDllClass {
- public:
- CDllClass(void);
- void MSG(const char * const str);
- };
4:在調(diào)用類的實現(xiàn)函數(shù)的文件里加上類的頭文件和Lib文件的引用
- #include "DllClass.h" //頭文件的引入,是程序可以定義類的對象
- #pragma comment(lib,"DrawDll.lib") //具體函數(shù)的定義
正常使用即可。以上就是對C++常規(guī)DLL的相關(guān)介紹。
【編輯推薦】