C++ DLL导出类的一种方法(纯虚函数)

纯虚函数定义如下(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的编写,本例调用是写入用户名和密码。测试成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qingchuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值