pan*_*nzi 6 c dll mingw shared-libraries
MinGW 支持__declspec(dllexport)/吗__declspec(dllimport)?即使是这样,我应该使用吗__attribute__((visibility("default")))?基本上我应该根据平台或编译器来决定使用什么?
应该是这样吗?
#ifdef _MSC_VER
# ifdef MYLIB_EXPORTS
# define MYLIB_API __declspec(dllexport)
# else
# define MYLIB_API __declspec(dllimport)
# endif
#else
# define MYLIB_API __attribute__((visibility("default")))
#endif
Run Code Online (Sandbox Code Playgroud)
或者像这样?
#if defined(_WIN32) || defined(_WIN64)
# ifdef MYLIB_EXPORTS
# define MYLIB_API __declspec(dllexport)
# else
# define MYLIB_API __declspec(dllimport)
# endif
#else
# define MYLIB_API __attribute__((visibility("default")))
#endif
Run Code Online (Sandbox Code Playgroud)
那么像__declspec(align(16))Vs这样的事情呢?__attribute__((aligned(16)))?
可见性对比 dllexport 是一个平台的东西,而不是编译器的东西。因此,将__declspec(dllexport)/ __declspec(dllimport)(或__attribute__((dllexport))/ __attribute__((dllimport)))与 MinGW 一起使用是正确的方法。请参阅:
http: //gcc.gnu.org/wiki/Visibility#How_to_use_the_new_C.2B-.2B-_visibility_support