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” 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值