pytorch源码解析-动态接口宏

动态库接口定义:
	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 便可

猜你喜欢

转载自www.cnblogs.com/longriyao/p/10802682.html