一、创建MFC规则DLL
1.启动VC6利用向导新建MFC规则共享DLL,如项目名:SQLStrBase
2.添加自定义的头文件和源文件,如:SQLStrSet.h和SQLStrSet.cpp
3.输出目录及拷贝头文件路径设置
3.1输出目录设置
Project->Setting...->General选项卡,Output files设置为:D:/Debug,如下图:
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宏,如下图:
注意要包含 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.运行程序显示结果如下图: