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

来源:互联网 发布:快意电梯营销网络 编辑:程序博客网 时间:2024/06/06 03:27

学习mysql时突然想玩玩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名称,自行更换)EXPORTSCreateExportObj @ 1DestroyExportObj @ 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的编写,本例调用是写入用户名和密码。测试成功。

阅读全文
0 0
原创粉丝点击