纯虚函数定义如下(mysqldll.h)
#pragma once
#ifdef MMYSQL_EXPORTS
#define MMYSQL_API __declspec(dllimport)
#else
#define MMYSQL_API __declspec(dllexport)
#endif
#include "stdafx.h"
#include <string>
#include <mysql.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
class mmysql
{
public:
virtual bool initConnection() = 0;
virtual bool addData(char* username, char* password) = 0;
virtual bool deleteData(char* username) = 0;
virtual bool isExistUser(char* username) = 0;
virtual bool isMatch(char* userName, char* passWord) = 0;
virtual void Release() = 0;
};
extern "C" MMYSQL_API mmysql* _stdcall CreateMySqlObj();
extern "C" MMYSQL_API void _stdcall DestroyMySqlObj(mmysql* pMmysql);
导出类定义如下(mysqlclass.h)
#pragma once
#include "MySqlDll.h"
class MMYSQL_API mysqlDLL : public mmysql
{
public:
mysqlDLL();
mysqlDLL(std::string hosts, std::string user, std::string pswd, std::string table, int port);
~mysqlDLL();
public:
virtual bool initConnection();
virtual bool addData(char* username, char* password);
virtual bool deleteData(char* username);
virtual bool isExistUser(char* username);
virtual bool isMatch(char* userName, char* passWord);
virtual void Release() {}
private:
int _port;
std::string _user;
std::string _pswd;
std::string _hosts;
std::string _table;
MYSQL _mySQL;
bool _isConnection;
};
.def文件如下
LIBRARY "ConsoleApplication4"(dll名称,自行更换)
EXPORTS
CreateExportObj @ 1
DestroyExportObj @ 2
这里提供 CreateMySqlObj()和DestroyMySqlObj(mmysql* pMmysql)的定义:
MMYSQL_API mmysql* APIENTRY CreateMySqlObj()
{
return new mysqlDLL;
}
MMYSQL_API void APIENTRY DestroyMySqlObj(mmysql* pMmysql)
{
pMmysql->Release();
}
调用示例如下:
#include "stdafx.h"
#include "MySqlDll.h"
#pragma comment(lib, "../debug/ConsoleApplication4.lib")
int main()
{
mmysql* m = CreateMySqlObj();
m->initConnection();
m->addData("张三", "38459");
return 0;
}
这里是学习mysql,随便学习一下dll的编写,本例调用是写入用户名和密码。测试成功。