MFC生成dll的区别

主要分三种:

A. 动态链接库(dll)

B.具有导出项的(dll)动态链接库

C.MFC动态链接库

对比项目:可以根据需要选择哪种dll方便

添加自定义导出功能Demo

  1. 添加导出实现接口:

A. 导出需要具有:__declspec(dllexport)

B. 按照C语言的格式导出:extern "C"

下面是示例:

#ifdef __cplusplus

#define INTERFACE_API __declspec(dllexport)

#else

#define INTERFACE_API __declspec(dllimport)

#endif

class CGeneralInterface

{

public:

CGeneralInterface();

virtual ~CGeneralInterface();

virtual BOOL Open(CString csParam, CString &csErr) = 0;

virtual void Close() = 0;

virtual BOOL Write(LPCVOID pData, DWORD dwNumberOfBytesToWrite, CString &csErr) = 0;

virtual UINT Read(LPVOID pData, DWORD dwNumberOfBytesToRead, UINT nReadTotalTimeout, CString &csErr) = 0;

virtual CString GetParam(CString csParam, CString csStart, CString csEnd) = 0;

};
extern "C" INTERFACE_API CGeneralInterface* GeneralExport(void);

真正的实现,也是对外调用的接口:

CGeneralInterface* GeneralExport(void)

{

return (CGeneralInterface*) new CGeneralCommunication();

}

对于实现类:

#ifdef __cplusplus

extern "C" {

#endif // __cplusplus

// 此类是从 dll 导出的

class CGeneralCommunication : public CGeneralInterface

{

public:

// 实现函数

};

#ifdef __cplusplus

}

#endif // __cplusplus

相关推荐
wh233z3 小时前
Codeforces Round 969 (Div. 2) (A~D)
c语言·开发语言·数据结构·c++·算法·图论
奕星星奕4 小时前
QT QObject源码学习(二)
c++·qt
s_little_monster4 小时前
【C++】Stack
开发语言·c++·经验分享·笔记·学习·学习方法
菜就多练~5 小时前
C++——STL(list类)
开发语言·c++
彩虹糖_haha5 小时前
C++核心编程和桌面应用开发 第一天(命名空间 using 内联函数 默认参数 C++和C的不同)
开发语言·c++
buaichifanqie5 小时前
拓扑排序算法
c++·算法·排序算法·图论·拓扑排序
xianwu5436 小时前
C++编译、链接和命名空间
开发语言·c++
zixingcai6 小时前
MFC修改控件ID的详细说明
c++·mfc
weixin_486681146 小时前
C++系列-谓词predicate
开发语言·c++·算法
捕鲸叉6 小时前
MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码
c++·qt·macos