Windows C++类导出DLL(利用多态完全屏蔽底层实现)

第一步:创建接口类

1.接口类 .h 文件

#ifndef ISmoke_h
#define ISmoke_h

/*
* ISmoke是一个提供给用户调用的头文件
* 对应的库文件为:SmokeDll.dll SmokeDll.lib
*/

class ISmoke
{
public:
	ISmoke() {};
	virtual ~ISmoke() {};

public:
	virtual void sayHello() = 0;
};

//放回实际被调类的指针
ISmoke* __cdecl getSmoke();

//析构实际被调类(getSmoke返回的ISmoke*)
void __cdecl destroySmoke(ISmoke* p);

#endif // !ISmoke_h

2.接口类 .cpp 文件

#include "pch.h"
#include "ISmoke.h"
#include "Smoke.h"

/*
*接口类仅仅实现需要到处的全局函数,目的是用于间接调用实际实现类的方法
*一般仅仅包含一个导出指针函数和一个析构指针函数
*/

ISmoke* __cdecl getSmoke() {
	ISmoke* p = new Smoke;
	return p;
}

void __cdecl destroySmoke(ISmoke* p) {
	if (p)
	{
		delete p;
	}
	return;
}

第二步:创建实际被调用的实现类

#ifndef Smoke_h
#define Smoke_h

#include "ISmoke.h"

class Smoke:public ISmoke
{
public:
	Smoke() {};
	vir

猜你喜欢

转载自blog.csdn.net/A_Pointer/article/details/107954616