Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -307,6 +307,11 @@ add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif() +# Disable DLL annotations on Windows for static builds. +if (WIN32 AND LIBUNWIND_ENABLE_STATIC AND NOT LIBUNWIND_ENABLE_SHARED) + add_definitions(-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS) +endif() + #=============================================================================== # Setup Source Code #=============================================================================== Index: src/config.h =================================================================== --- src/config.h +++ src/config.h @@ -50,9 +50,13 @@ #define _LIBUNWIND_EXPORT #define _LIBUNWIND_HIDDEN #else - // FIXME: these macros are not correct for COFF targets - #define _LIBUNWIND_EXPORT __attribute__((visibility("default"))) - #define _LIBUNWIND_HIDDEN __attribute__((visibility("hidden"))) + #if defined(_WIN32) + #define _LIBUNWIND_EXPORT __declspec(dllexport) + #define _LIBUNWIND_HIDDEN + #else + #define _LIBUNWIND_EXPORT __attribute__((visibility("default"))) + #define _LIBUNWIND_HIDDEN __attribute__((visibility("hidden"))) + #endif #endif #if (defined(__APPLE__) && defined(__arm__)) || defined(__USING_SJLJ_EXCEPTIONS__)