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

或者像这样?
#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
__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

关于c - MinGW:使用 __declspec(dllexport) 或 __attribute__((visibility ("default")))?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22285240/

10-11 18:51