每次都为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
万连文 阅读(939)
评论(2) 编辑 收藏 引用 所属分类:
MFC