程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> MFC擴展動態鏈接庫

MFC擴展動態鏈接庫

編輯:關於VC++

我接觸DLL的時間也不長,對DLL的了解也不是很深,在這裡以一個簡單的例子說明一下應用程序與DLL是如何工作的,希望給初學者一些幫助。文章附有源碼,以編譯通過。

一、創建動態鏈接庫:

1,啟動VC,在Project選項卡中選擇MFC AppWizard[dll],輸入工程名字,單擊OK,然後選擇MFC Extension DLL(using shared MFC DLL),單擊完成。

2,在cpp文件中定義函數ShowMessage(),如下所示: extern "C" _declspec(dllexport) void ShowMessage() { AfxMessageBox("The function is in the MFC Dll"); } 說明,extern "C" 表示該函數可以在不是用C++語言所寫的應用程序中使用。dllexport說明函數是導出函數。當然,要導出函數還可以在def文件中加入函數名即可。

3,編譯連接,生成dll文件(在debug目錄下)。

二、創建應用程序:

在這裡創建一個基於對話框的應用程序。添加一個編輯框,用於顯示所加載鏈接庫的路徑。三個按鈕,一個用於打開文件,讓用戶選擇所要加載的鏈接庫;一個用來加載鏈接庫並調用鏈接庫中的函數,另一個用於退出應用程序。 代碼如下所示:

void CUseDll2Dlg::OnSelect() //選擇所要加載的鏈接庫
{ // TODO: Add your control notification handler code here
CString filter;
filter="Dll(*.dll)|*.dll|All Files(*.*)|*.*||";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);
if(dlg.DoModal()==IDOK)
{ m_strPath=dlg.GetPathName(); }
UpdateData(FALSE);
}
void CUseDll2Dlg::OnButtonRun()
{ // TODO: Add your control notification handler code here
HMODULE hdll=::LoadLibrary(m_strPath);//加載鏈接庫
if(hdll==NULL) {
MessageBox("加載動態鏈接庫失敗!","Warning",MB_OK|MB_ICONWARNING); return;
}
typedef void (*pShow)();
pShow Show=(pShow)::GetProcAddress(hdll,"ShowMessage");
if(Show==NULL) {
MessageBox("The function can not be found!","Warning",MB_OK|MB_ICONWARNING);
} else
Show(); //調用
}

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