基于mfc的动态库如何导出类和接口

1 首先建立MFC的dll的工程,如图:

2 选择标准DLL选项,如图:

3 点击finish按钮结束项目的定义。

4 导出类的定义

#include "def.h"

#ifdef _USRDLL
class __declspec(dllexport) CExportSerialNum
#else
class __declspec(dllimport) CExportSerialNum
#endif
{
public:
    CExportSerialNum();
    ~CExportSerialNum();

public:
    // 呈现窗口
    stSerialNum showDlg();

    // 设置当前INI文件的编号
    void SetCurIniNum(CString iniSerialNum);

    // 得到当前序列号
    stSerialNum GetCurSerialNum();

    // 设置当前序列号到指定的模板文件编号Ini中
    void SaveCurSerialNum(CString cstrCurTempfileNo ,const stSerialNum& SerialNum);
};

#ifdef _USRDLL
__declspec(dllexport) CExportSerialNum ExportSerialNum;
#else
__declspec(dllimport) CExportSerialNum ExportSerialNum;
#endif

5 导出接口的定义

#include <string>
using namespace std;


struct stSvrInfo
{
    string sIp;
    unsigned short nPort;
};

struct stTempFileInfo
{
    string TempFilePath;
};


class CTcpSvrNotifyInf{
public:
    /*
     * 当接受客户端的连接 nError:0 成功连接 -1 连接失败
     */
    virtual void onAccept(int nError) = 0;

    /*
     * 当收到客户端发送的数据,cstrTmpName:为模板名 ,如01、02
     */
    virtual void onUpdateData(CString cstrTmpName) = 0; 

    /*
     * 当客户端连接关闭了
     */
    virtual void onClientClosed() = 0;
};

class CExportInf{
public:
    /*
     * showDlg: 显示对话框,返回值 1: 点击IDOK 0:点击取消
     */
    virtual int showDlg() = 0;

    virtual stSvrInfo GetSvrInfo() = 0;

    virtual stTempFileInfo GetTempFileInfo() = 0;

    virtual void SetTcpSvrNotifyInf(CTcpSvrNotifyInf* pTcpSvrNotifyInf) = 0;

    virtual bool StartSvr(const stSvrInfo& SvrInfo) = 0;

    virtual bool ReStartSvr(const stSvrInfo& SvrInfo) = 0;
    
    virtual void StopSvr() = 0;

    virtual void Destory() = 0;
};

#ifdef _USRDLL
#define EXPORTINF __declspec(dllexport)  
#else
#define EXPORTINF __declspec(dllimport)  
#endif

EXPORTINF CExportInf* CreateExportInf();

注意导出资源时,一定要记得在导出资源时加上这行:

    AFX_MANAGE_STATE(AfxGetStaticModuleState());// 切换DLL模态的状态
    if (IDOK == dlg.DoModal())
        return 1;
    else
        return 0;

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值