Repository: arrow Updated Branches: refs/heads/master b06522870 -> a58893882
ARROW-1159: [C++] Use dllimport for visibility when not building Arrow library This should fix the linking issues currently in https://ci.appveyor.com/project/ApacheSoftwareFoundation/parquet-cpp/build/1.0.173/job/90ahlb7eoxlch3yj Author: Wes McKinney <wes.mckin...@twosigma.com> Closes #789 from wesm/ARROW-1154-post and squashes the following commits: 985cedee [Wes McKinney] Use dllimport for visibility when not building Arrow library, this enables static members to be visible from inline functions like in cpu-info.h Project: http://git-wip-us.apache.org/repos/asf/arrow/repo Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/a5889388 Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/a5889388 Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/a5889388 Branch: refs/heads/master Commit: a58893882ac8acd1ac4a5036685cbf09a9a09673 Parents: b065228 Author: Wes McKinney <wes.mckin...@twosigma.com> Authored: Tue Jun 27 16:06:43 2017 -0400 Committer: Wes McKinney <wes.mckin...@twosigma.com> Committed: Tue Jun 27 16:06:43 2017 -0400 ---------------------------------------------------------------------- cpp/cmake_modules/SetupCxxFlags.cmake | 4 ++++ cpp/src/arrow/util/visibility.h | 6 ++++++ 2 files changed, 10 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/arrow/blob/a5889388/cpp/cmake_modules/SetupCxxFlags.cmake ---------------------------------------------------------------------- diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index e210655..6e92c4b 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -30,6 +30,10 @@ if (MSVC) # insecure, like std::getenv add_definitions(-D_CRT_SECURE_NO_WARNINGS) + # Use __declspec(dllexport) during library build, other users of the Arrow + # headers will see dllimport + add_definitions(-DARROW_EXPORTING) + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") # clang-cl set(CXX_COMMON_FLAGS "-EHsc") http://git-wip-us.apache.org/repos/asf/arrow/blob/a5889388/cpp/src/arrow/util/visibility.h ---------------------------------------------------------------------- diff --git a/cpp/src/arrow/util/visibility.h b/cpp/src/arrow/util/visibility.h index 0018ce0..ea78e57 100644 --- a/cpp/src/arrow/util/visibility.h +++ b/cpp/src/arrow/util/visibility.h @@ -24,7 +24,13 @@ #else #pragma GCC diagnostic ignored "-Wattributes" #endif + +#ifdef ARROW_EXPORTING #define ARROW_EXPORT __declspec(dllexport) +#else +#define ARROW_EXPORT __declspec(dllimport) +#endif + #define ARROW_NO_EXPORT #else // Not Windows #ifndef ARROW_EXPORT