每次都為dll書寫煩惱,書寫模式其實是固定的,下面就一步一步完全實現一個動態庫。
1、選擇MFC AppWizard(dll),項目名Demo,默認完成
2、新建一h文件DemoExp.h,導出模塊所有接口,新建一cpp實現接口
3、在DemoExp.h中:
// 下面兩行防止重復包含
#ifndef?_DEMOEXP_H???(注:可以是任意的)
#define?_DEMOEXP_H
// 下面一行預定義,在編譯的時候定義_DEMOEXP把函數導出,調用的時候沒有定義則導出函數
#ifdef _DEMOEXP???(注:可以是任意的)
#define DEMOEXPAPI __declspec(dllexport)
#else
#define DEMOEXPAPI __declspec(dllimport)
#endif
// 導出函數接口
DEMOEXPAPI int ShowDlg();
// 調用的時候沒有定義則自動連接
#ifndef _DEMOEXP???(注:和上面一樣)
?#pragma comment(lib, "Demo.lib")
#endif
#endif
4、在DemoExp.cpp中先空實現:
#include "StdAfx.h"
#include "DemoExp.h"
DEMOEXPAPI int ShowDlg()
{
?return 0;
}
5、添加一對話框,并生產類CDemoDlg類
6、在DemoExp.cpp中:
#include "DemoDlg.h"
修改函數如下:
DEMOEXPAPI int ShowDlg()
{
?// 切換資源模塊
?AFX_MANAGE_STATE(AfxGetStaticModuleState());
?CDemoDlg?dlg;
?dlg.DoModal();
?return 0;
}
7、設置Setting->c/c++->Preprocessor definitions:添加,_DEMOEXP;stdafx.h中添加#include "Resource.h"
8、編譯即生產dll
9、添加一對話框程序測試,具體見示例代碼。
posted on 2006-02-13 23:32
萬連文 閱讀(953)
評論(2) 編輯 收藏 引用 所屬分類:
MFC