From 528366d5455cf93307caa0ca7d628b6ca6fdf5a0 Mon Sep 17 00:00:00 2001 From: David Gobbi <david.gobbi@gmail.com> Date: Sun, 4 Aug 2024 11:35:23 -0600 Subject: [PATCH] Move EXPORT from vtkSMPToolsImpl template to specializations The method definitions in vtkSMPToolsImpl.h caused a build error "definition of dllimport function not allowed" with MSVC. The error goes away if the export macro is applied to the backend specializations instead of the vtkSMPToolsImpl template itself. --- Common/Core/SMP/Common/vtkSMPToolsImpl.h | 2 +- Common/Core/SMP/OpenMP/vtkSMPToolsImpl.txx | 8 ++++---- Common/Core/SMP/STDThread/vtkSMPToolsImpl.txx | 11 ++++++----- Common/Core/SMP/Sequential/vtkSMPToolsImpl.txx | 6 +++--- Common/Core/SMP/TBB/vtkSMPToolsImpl.txx | 8 ++++---- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Common/Core/SMP/Common/vtkSMPToolsImpl.h b/Common/Core/SMP/Common/vtkSMPToolsImpl.h index e53ba41f175..feb6f883634 100644 --- a/Common/Core/SMP/Common/vtkSMPToolsImpl.h +++ b/Common/Core/SMP/Common/vtkSMPToolsImpl.h @@ -43,7 +43,7 @@ const BackendType DefaultBackend = BackendType::OpenMP; #endif template <BackendType Backend> -class VTKCOMMONCORE_EXPORT vtkSMPToolsImpl +class vtkSMPToolsImpl { public: //-------------------------------------------------------------------------------- diff --git a/Common/Core/SMP/OpenMP/vtkSMPToolsImpl.txx b/Common/Core/SMP/OpenMP/vtkSMPToolsImpl.txx index 25c041bedd7..dff4dfc2f22 100644 --- a/Common/Core/SMP/OpenMP/vtkSMPToolsImpl.txx +++ b/Common/Core/SMP/OpenMP/vtkSMPToolsImpl.txx @@ -145,19 +145,19 @@ void vtkSMPToolsImpl<BackendType::OpenMP>::Sort( //-------------------------------------------------------------------------------- template <> -void vtkSMPToolsImpl<BackendType::OpenMP>::Initialize(int); +VTKCOMMONCORE_EXPORT void vtkSMPToolsImpl<BackendType::OpenMP>::Initialize(int); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::OpenMP>::GetEstimatedNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::OpenMP>::GetEstimatedNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::OpenMP>::GetEstimatedDefaultNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::OpenMP>::GetEstimatedDefaultNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -bool vtkSMPToolsImpl<BackendType::OpenMP>::GetSingleThread(); +VTKCOMMONCORE_EXPORT bool vtkSMPToolsImpl<BackendType::OpenMP>::GetSingleThread(); VTK_ABI_NAMESPACE_END } // namespace smp diff --git a/Common/Core/SMP/STDThread/vtkSMPToolsImpl.txx b/Common/Core/SMP/STDThread/vtkSMPToolsImpl.txx index 290d072722c..5c7bb0a5ab1 100644 --- a/Common/Core/SMP/STDThread/vtkSMPToolsImpl.txx +++ b/Common/Core/SMP/STDThread/vtkSMPToolsImpl.txx @@ -117,23 +117,24 @@ void vtkSMPToolsImpl<BackendType::STDThread>::Sort( //-------------------------------------------------------------------------------- template <> -void vtkSMPToolsImpl<BackendType::STDThread>::Initialize(int); +VTKCOMMONCORE_EXPORT void vtkSMPToolsImpl<BackendType::STDThread>::Initialize(int); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::STDThread>::GetEstimatedNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::STDThread>::GetEstimatedNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::STDThread>::GetEstimatedDefaultNumberOfThreads(); +VTKCOMMONCORE_EXPORT int +vtkSMPToolsImpl<BackendType::STDThread>::GetEstimatedDefaultNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -bool vtkSMPToolsImpl<BackendType::STDThread>::GetSingleThread(); +VTKCOMMONCORE_EXPORT bool vtkSMPToolsImpl<BackendType::STDThread>::GetSingleThread(); //-------------------------------------------------------------------------------- template <> -bool vtkSMPToolsImpl<BackendType::STDThread>::IsParallelScope(); +VTKCOMMONCORE_EXPORT bool vtkSMPToolsImpl<BackendType::STDThread>::IsParallelScope(); VTK_ABI_NAMESPACE_END } // namespace smp diff --git a/Common/Core/SMP/Sequential/vtkSMPToolsImpl.txx b/Common/Core/SMP/Sequential/vtkSMPToolsImpl.txx index d77309694c3..5913dd263ec 100644 --- a/Common/Core/SMP/Sequential/vtkSMPToolsImpl.txx +++ b/Common/Core/SMP/Sequential/vtkSMPToolsImpl.txx @@ -95,15 +95,15 @@ void vtkSMPToolsImpl<BackendType::Sequential>::Sort( //-------------------------------------------------------------------------------- template <> -void vtkSMPToolsImpl<BackendType::Sequential>::Initialize(int); +VTKCOMMONCORE_EXPORT void vtkSMPToolsImpl<BackendType::Sequential>::Initialize(int); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::Sequential>::GetEstimatedNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::Sequential>::GetEstimatedNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -bool vtkSMPToolsImpl<BackendType::Sequential>::GetSingleThread(); +VTKCOMMONCORE_EXPORT bool vtkSMPToolsImpl<BackendType::Sequential>::GetSingleThread(); VTK_ABI_NAMESPACE_END } // namespace smp diff --git a/Common/Core/SMP/TBB/vtkSMPToolsImpl.txx b/Common/Core/SMP/TBB/vtkSMPToolsImpl.txx index 5b3ab312555..919313ecf0a 100644 --- a/Common/Core/SMP/TBB/vtkSMPToolsImpl.txx +++ b/Common/Core/SMP/TBB/vtkSMPToolsImpl.txx @@ -196,19 +196,19 @@ void vtkSMPToolsImpl<BackendType::TBB>::Sort( //-------------------------------------------------------------------------------- template <> -void vtkSMPToolsImpl<BackendType::TBB>::Initialize(int); +VTKCOMMONCORE_EXPORT void vtkSMPToolsImpl<BackendType::TBB>::Initialize(int); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::TBB>::GetEstimatedDefaultNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::TBB>::GetEstimatedDefaultNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -int vtkSMPToolsImpl<BackendType::TBB>::GetEstimatedNumberOfThreads(); +VTKCOMMONCORE_EXPORT int vtkSMPToolsImpl<BackendType::TBB>::GetEstimatedNumberOfThreads(); //-------------------------------------------------------------------------------- template <> -bool vtkSMPToolsImpl<BackendType::TBB>::GetSingleThread(); +VTKCOMMONCORE_EXPORT bool vtkSMPToolsImpl<BackendType::TBB>::GetSingleThread(); VTK_ABI_NAMESPACE_END } // namespace smp -- GitLab