主要分三种:
A. 动态链接库(dll)
B.具有导出项的(dll)动态链接库
C.MFC动态链接库
对比项目:可以根据需要选择哪种dll方便
添加自定义导出功能Demo
- 添加导出实现接口:
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