VS2017的C++开发心得(十五)导出类与API开发(下)

本文探讨了在VS2017中如何导出C++类以开发API,指出直接导出类可能导致接口暴露过多,建议使用接口(Interface)的方式导出API。作者分享了一个正确的API导出代码结构,并提到在多语言环境下,C++在开发API方面仍具优势,同时鼓励学习C++的开发者保持信心,因为C++库的跨平台性和性能优势仍然显著。
摘要由CSDN通过智能技术生成

这一篇才正式进入正题,怎么导出类和开发API?

其实导出类很简单,如下:

//CTest.h
#pragma once
#include "DLL.h"
class API CTest
{
public:
	CTest(int* _buf,int _size);
	~CTest();
	int* Reverse();
	static int InstanceCount;
private:
	int* m_rawbuf,*m_outbuf;
	int m_bufCount;
};

在class和CTest之间加上导出关键字API就行了。其他代码请看上一篇文章。然后把APISLN中的CTest.cpp文件去掉,就可以实现CTest的类导出了。

请看导出类以后的运行结果:

静态变量InstanceCount的计数统一了起来。

但是,这并不是好的导出形式。就这个问题上我曾经和公司前主管讨论过,他觉得导出类会暴露太多接口,所以他认为类不应该导出,就是该互相传送指针使用,分别编译。分别编译的弊端我在上一篇已经解释过了。至于暴露接口的问题确实存在,比如上面我实际上只想告诉你public的接口,但我既然给了你头文件,那么我的private和protected等一系列内部接口都暴露出来了。

所以这就引出一个新的概念API,以及另一种导出类的形式virtual导出。

先看看一个正确导出API的代码结构:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值