1、c函数接口
#ifdef _WINDOWS
#define XXX_API extern "C" __declspec(dllexport)
#else
#define XXX_API extern "C" __attribute__ ((visibility("default")))
#endif
因为windows系统下的动态库是dll后缀的,所以用了dllexport,如果在linux中用dllexport,会导致XXX_API对应的函数都被认为是未定义的。
2、类接口
#ifdef _WINDOWS
#define XXX_API __declspec(dllexport)
#else
#define XXX_API __attribute__ ((visibility("default")))
#endif
或者
#ifdef _WINDOWS
#define XXX_API __declspec(dllexport)
#else
#define XXX_API
#endif