標(biāo)題: VC++學(xué)習(xí)之---MFC程序與調(diào)用DLL文件 [打印本頁]
作者: shaonv 時間: 2015-1-1 18:34
標(biāo)題: VC++學(xué)習(xí)之---MFC程序與調(diào)用DLL文件
MFC編寫dll與調(diào)用
1、dll的新建和編寫
用vc++ 2008新建MFC ->MFCDLL,在向?qū)е羞x擇 “使用共享 MFC DLL的規(guī)則 DLL”,然后點擊
完成就新建了一個dll文件工程。
打開 .cpp文件,編寫自己需要的函數(shù)或子程序。
例如:函數(shù)聲明可以放到.h里面,就像平時C語言工程一樣
int shaoAdd(int a,int b)
{
int c;
c=a+b;
return c;
}
然后打開 .def文件,在“EXPORTS下面加入自己要對外公開的函數(shù)
例如:
EXPORTS
; Explicit exports can go here
DllCanUnloadNow PRIVATE //默認(rèn)自帶
DllGetClassObject PRIVATE //默認(rèn)自帶
DllRegisterServer PRIVATE //默認(rèn)自帶
shaoAdd PUBLIC //自定義的函數(shù),只要名字即可
之后編譯,到這里就完成了dll文件的編寫、公開、編譯。
2、dll文件的調(diào)用
新建一個 MFC 應(yīng)用程序項目,在需要調(diào)用dll的 .cpp文件中輸入一下代碼 :
#pragma comment(lib,"dll文件的lib文件名");
__declspec( dllimport ) dll文件中的函數(shù)申明;
例: #pragma comment(lib,"test.lib");
__declspec( dllimport ) int shaoAdd(int a,int b);
//注意,雖然這里是lib文件,但是生產(chǎn)exe后,只把test.dll文件放到exe目錄下就行。不需要test.lib文件
之后把dll工程中編譯好的 .dll 和 .lib 文件復(fù)制到調(diào)用dll程序的源文件目錄,最后就能在調(diào)用dll的源程序中使用dll中的函數(shù)!
例如:在對話框按鈕事件中使用
void CMyDlg::OnButton5()
{
m_edit2.SetSel(0,-1,FALSE);
m_edit2.Copy();
MessageBox("內(nèi)容已復(fù)制!!!");
if (shaoAdd(10,20)==30)
{
MessageBox("DLL調(diào)用成功!!!");
}
}
最后編譯你的工程,生產(chǎn)exe文件即可。
使用時,要把exe文件和dll文件放到一個目錄下,即可使用,否則會報錯.
備注:DLL文件內(nèi)如果使用到MFC庫的時候,最好在每個自定義函數(shù)體內(nèi)都加上
"AFX_MANAGE_STATE(AfxGetStaticModuleState());"
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |