场景

当一个类在头文件被declspec(dllexport)定义的时候,说明该类将被导出,当提供给用户调用的时候,该头文件中可以保留declspec(dllexport)这个关键字,程序能够正常运行,但是明显不符合语法规范,如果是手动修改,每重新编译一次,都必须手动修改该头文件。


解决

创建一个头文件dlldefine.h,里面的内容如下:

#ifdef SEARCH_EXPORTS

#define SEARCH_CLASS __declspec(dllexport)

#define SEARCH_API extern "C" __declspec(dllexport)

#else

#define SEARCH_CLASS __declspec(dllimport)

#define SEARCH_API extern "C" __declspec(dllimport)


使用

创建的动态库,需要导出的类包含该头文件,使用SEARCH_CLASS取代导出的关键字,在预定义处理

器中添加SEARCH_EXPORTS,调用该动态库的只需要包含该头文件,因为在编译的时候没有定义SEARCH_EXPORTS,所以就实现了

导入的功能