C++接口导出宏定义
C++经常用到接口导出和导入,也就是__declspec(dllexport)
和__declspec(dllimport)
如果总是在声明处写导出,使用处写导入,很不方便,而且如果是跨平台代码,这样写兼容性太差
一般使用宏来解决接口导入导出问题
模板如下
#ifndef PROC_API
# ifdef PROC_LIB
# define PROC_API __declspec(dllexport)
# else
# define PROC_API __declspec(dllimport)
# endif
#endif
其中PROC_API
代表是我这个库的API,名字随便取;
PROC_LIB
定义在项目配置文件里,只在当前项目有定义,用来区分是定义还是使用
逻辑是:如果定义了PROC_LIB
宏,说明是我这个名为PROC的库,名字可以随便取,也就走第一个判断,把PROC_API
定义为__declspec(dllexport)
;反之,定义为另一个导入宏
如果是跨平台代码,则还要加上判断系统的宏,就把PROC_API
定义为空即可