VC中导出类生成动态链接库的方式

利用dll导出类时,相比利用dll导出函数比较特殊。
导出时可在.h文件中,利用下面的代码进行导出:
class _declspec(dllexport)  CMatch
{
public:
	int Add(int add1,int add2);
	int Sub(int sub1,int sub2);
};
然后在.cpp对类进行实现即可。
 
在导入该dll中的类时,需要在类的声明前(.h文件中),书写下面的代码:
 
class _declspec(dllimport)  CMatch
{
public:
	int Add(int add1,int add2);
	int Sub(int sub1,int sub2);
};
 
问题出现了:通常我们使用dll中的类时,dll的生产商一般会提供一个dll和一个头文件,而第三方的头文件在正常情况下是不允许我们进行修改的,我们又怎么去修改导入类?
 
为了解决该问题,可利用以下方法:
在dll的导出类中进行如下声明:
头文件Math.h
#ifdef  DLLCLASS_EXPORT	//用户在使用该dll时,不会定义DLLCLASS_EXPORT,这样                        //EXT_CLASS等价于_declspec(dllimport)
 #define EXT_CLASS _declspec(dllexport)
#else
#define EXT_CLASS _declspec(dllimport)
#endif
 
class EXT_CLASS CMatch
{
public:
	int Add(int add1,int add2);
	int Sub(int sub1,int sub2);
};
 
源文件math.cpp
#define DLLCLASS_EXPORTS //该宏的定义一定要放在包含头文件的include之前。
#include”Math.h” 

https://blog.csdn.net/hyman_c/article/details/49474203

你可能感兴趣的:([Windows]导出库)