动态库接口定义: gcc: 定义在动态库的显示属性: 作用对象: 函数、变量、模板以及C++类 default: 表示在动态库内可见 hidden: 表示不可见 #define EXPORT __attribute__((__visibility__("default"))) 微软: #define C10_EXPORT __declspec(dllexport) 制作dll时候用 #define C10_IMPORT __declspec(dllimport) 调用dll时候用 放到同一个api 头文件中 当编译的时候用export 调用的时候用 import 通常用法: class API Tensor {}; 常用方法: #ifdef _WIN32 #windows编译 #if defined(C10_BUILD_SHARED_LIBS) #如果定义动态库 #define C10_EXPORT __declspec(dllexport) #define C10_IMPORT __declspec(dllimport) #else #define C10_EXPORT #define C10_IMPORT #endif #else // _WIN32 #if defined(__GNUC__) #define C10_EXPORT __attribute__((__visibility__("default"))) #else // defined(__GNUC__) #define C10_EXPORT #endif // defined(__GNUC__) #define C10_IMPORT C10_EXPORT #endif // _WIN32 #ifdef BUILD_MAIN_LIB #编译的时候 这个有定义 调用的时候没有定义 #define API C10_EXPORT #else #define API C10_IMPORT #endif 真正使用的时候使用: API 便可