一、创建MFC规则DLL
1.启动VC6利用向导新建MFC规则共享DLL,如项目名:SQLStrBase
2.添加自定义的头文件和源文件,如:SQLStrSet.h和SQLStrSet.cpp
3.输出目录及拷贝头文件路径设置
3.1输出目录设置
Project->Setting...->General选项卡,Output files设置为:D:/Debug,如下图:
3.2头文件拷贝路径
Project->Setting...->Post-build step选项卡,添加生成后拷贝事件,如下图:
4.头文件中添加如下代码:
/** 文件名称:SQLStrSet.h* 文件标识:* 摘要:创建数据库表的SQL语句** 当前版本:1.0* 作者:齐付超* 完成日期:2009年10月20日** 取代版本:1.0* 原作者:齐付超* 完成日期:2009年10月20日*/
//避免SQLStrSet.h头文件被重复加载#ifndef __SQLSTRSET_H#define __SQLSTRSET_H
//添加需包含的头文件
//定义宏 OUTEXPORT, 声明将函数在源程序中声明为导出,//在调用程序中声明为导入#ifndef __SQLSTRBASE#define OUTEXPORT __declspec(dllimport) #else#define OUTEXPORT __declspec(dllexport)#endif
数据库管理表extern "C"{ //1 数据库管理表 OUTEXPORT BOOL WINAPI _GetDBManagerStr(CString *sqlstr);}
/岩芯数据库表创建SQL语句extern "C"{
//1 矿区基本信息表 OUTEXPORT BOOL WINAPI _GetMineBaseInfoStr(CString *sqlstr);
......}
/照片库表///extern "C"{ //1 照片表 OUTEXPORT BOOL WINAPI _GetZKSPhotoStr(CString *sqlstr);}
///数据字典信息表//extern "C"{ //1 数据字典信息表 OUTEXPORT BOOL WINAPI _GetDataDictStr(CString *sqlstr);}
//在调用程序中加载生成的 SQLStrBase.lib 文件#ifndef __SQLSTRBASE #pragma comment(lib, "SQLStrBase.lib")#endif
#endif
5.添加头文件中预定义宏__SQLSTRBASE,此宏用于标识dll源程序和调用程序包含此头文件中声明的函数的导入导出方式及lib是否加载,起到运行时选择的作用。
Project->Setting...->C/C++选项卡,Preprocessor definitions:添加__SQLSTRBASE宏,如下图:
6.在.cpp文件中添加源码
注意要包含 StdAfx.h头文件,否则会报错。
/**版权说明及文件描述见 SQLStrSet.h 头文件*/
//添加所需头文件#include "StdAfx.h"#include "SQLStrSet.h"
岩芯数据库表创建SQL语句实现//矿区基本信息表BOOL WINAPI _GetMineBaseInfoStr(CString *sqlstr){ CString tempstr=_T(""); tempstr="CREATE TABLE MINE_BASEINFO"; tempstr+="( "; tempstr+="MINE_ID int IDENTITY(1,1), "; tempstr+="MINE_CODE varchar(20), "; tempstr+="EXPL_STAGE varchar(1), ";
...... tempstr+="PRIMARY KEY(MINE_CODE,EXPL_STAGE)"; tempstr+=" )"; *sqlstr=tempstr;
return TRUE;}
7.编译运行在设置的输出目录下即可生成SQLStrBase.dll和SQLStrBase.lib两个文件及拷贝的SQLStrSet.h头文件。
二、DLL的调用
1.启动VC6 另建MFC对话框应用程序项目,如DLLTestApp。
2.设置.exe输出路径(参考DLL输出目录设置过程,并且目录相同),
3.设置include library包含路径
Tools->Options...->Directories选项卡,Show directories for:下分别设置include files 和library files包含目录,包含D:/Debug,使得生成的dll lib .h文件能够搜索到。
4.在对话框对应.cpp下添加dll头文件代码:
#include "SQLStrSet.h"
5.在对话框上添加一Button按钮,添加Click事件响应函数,并调用dll中到处的方法,代码如下:
// TODO: Add your control notification handler code here CString tempstr=_T(""); _GetMineBaseInfoStr(&tempstr); AfxMessageBox(tempstr);
6.运行程序显示结果如下图: