diff --git a/apps/gpu/LidDrivenCavity/CMakeLists.txt b/apps/gpu/LidDrivenCavity/CMakeLists.txt
index 6029aca23555b10b9707ea6978ec7a833cd54b41..c404f6a6d2ccc156d7fba562ceefde35873e08d0 100644
--- a/apps/gpu/LidDrivenCavity/CMakeLists.txt
+++ b/apps/gpu/LidDrivenCavity/CMakeLists.txt
@@ -12,7 +12,7 @@ set(includeDirectories "${CMAKE_SOURCE_DIR}/src/gpu"
 PROJECT(LidDrivenCavity)
 
 
-vf_add_library(BUILDTYPE binary DEPENDS VirtualFluids_GPU basics GridGenerator GksMeshAdapter GksGpu FILES LidDrivenCavity.cpp)
+vf_add_library(BUILDTYPE binary DEPENDS basics GridGenerator VirtualFluids_GPU GksMeshAdapter GksGpu FILES LidDrivenCavity.cpp)
 
 vf_get_library_name(library_name)
 target_include_directories(${library_name} PRIVATE ${includeDirectories} )
\ No newline at end of file
diff --git a/gpu.cmake b/gpu.cmake
index 44dbfb50d2e72856b67028433488f8219e103b7b..7eba1c758400a9afede3a2a03c09847a14faaccd 100644
--- a/gpu.cmake
+++ b/gpu.cmake
@@ -82,11 +82,7 @@ enable_language(CUDA)
 
 include(${CMAKE_PATH}/CMakeMacros_old/general/FindCompiler.cmake)
 configure_file(src/gpu/VirtualFluidsDefinitions.in.h VirtualFluidsDefinitions.h)
-IF(MSVC)
-    SET( CMAKE_CXX_FLAGS "/FI${CMAKE_BINARY_DIR}/VirtualFluidsDefinitions.h ${CMAKE_CXX_FLAGS}" )
-ELSE(MSVC)
-    SET( CMAKE_CXX_FLAGS "-include ${CMAKE_BINARY_DIR}/VirtualFluidsDefinitions.h ${CMAKE_CXX_FLAGS}" )
-ENDIF(MSVC)
+
 
 # only use this with device of CC larger than 6.0
 IF(VF_DOUBLE_ACCURACY)
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index ef983646465e9b81a82fd345aae2a7375a42e751..476cbdc75b100d91a8659f2292bcd457d7d0b8c9 100644
--- a/src/basics/CMakeLists.txt
+++ b/src/basics/CMakeLists.txt
@@ -19,9 +19,7 @@ include(Core/buildInfo.cmake)
 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/VirtualFluidsCore)
 INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
 
-IF(MSVC)
-    add_compile_definitions(NOMINMAX)                # Disable Min/Max-Macros
-ENDIF(MSVC)
+
 
 vf_add_library(BUILDTYPE static
                FOLDER
@@ -52,6 +50,10 @@ vf_get_library_name (library_name)
 target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/Core)
 target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
 
+IF(MSVC)
+    target_compile_definitions(${library_name} PUBLIC NOMINMAX) # Disable Min/Max-Macros
+ENDIF(MSVC)
+
 include (${CMAKE_PATH}/3rd/mpi.cmake)
 
 vf_add_tests()
\ No newline at end of file
diff --git a/src/basics/Core/DataTypes.h b/src/basics/Core/DataTypes.h
index 37c09d1fe73972720fc0073ed64416c70cdbeba8..b65f3344c2788ee3e2af04bf3b2813f5a055c52d 100644
--- a/src/basics/Core/DataTypes.h
+++ b/src/basics/Core/DataTypes.h
@@ -3,7 +3,7 @@
 
 #include <string>
 
-//#include "VirtualFluidsDefinitions.h"
+#include "VirtualFluidsDefinitions.h"
 
 #ifdef VF_DOUBLE_ACCURACY
 typedef double real;
diff --git a/src/basics/Core/RealConstants.h b/src/basics/Core/RealConstants.h
index 46c418d574bf9914fc1325bd17b97237dc6ed541..a555d7ee27ba5427ac673473def7ed9b57f0d817 100644
--- a/src/basics/Core/RealConstants.h
+++ b/src/basics/Core/RealConstants.h
@@ -1,7 +1,7 @@
 #ifndef REAL_CONSTANT_H
 #define REAL_CONSTANT_H
 
-//#include "VirtualFluidsDefinitions.h"
+#include "VirtualFluidsDefinitions.h"
 
 #ifdef VF_DOUBLE_ACCURACY
 #define c1o2		0.5
diff --git a/src/gpu/GridGenerator/utilities/math/Math.cu b/src/gpu/GridGenerator/utilities/math/Math.cu
index 3b35b410cab92d98fa1dd4f5014c44cdb6fa5942..b6aa0499994240fc4221c3734e91c0bb3e94c7a9 100644
--- a/src/gpu/GridGenerator/utilities/math/Math.cu
+++ b/src/gpu/GridGenerator/utilities/math/Math.cu
@@ -34,6 +34,8 @@
 
 #include <cmath>
 
+#include "VirtualFluidsDefinitions.h"
+
 bool vf::Math::equal(const real& val1, const real& val2, real maxRelDiff)
 {
 	const real diff = std::fabs(val1 - val2);
diff --git a/src/gpu/VirtualFluidsDefinitions.in.h b/src/gpu/VirtualFluidsDefinitions.in.h
index 2d5822c1b1988fbfbb205d85a1e976161f791874..587a0a215d3d7e8886e1809f05568671f18f29d6 100644
--- a/src/gpu/VirtualFluidsDefinitions.in.h
+++ b/src/gpu/VirtualFluidsDefinitions.in.h
@@ -23,44 +23,4 @@
 #cmakedefine VF_CXX_COMPILER_IS_MSVC
 #cmakedefine VF_CXX_COMPILER_IS_CLANG
 
-
-// Generic helper definitions for shared library support
-#if defined _WIN32 || defined __CYGWIN__
-  #define VF_SHARED_LIB_IMPORT __declspec(dllimport)
-  #define VF_SHARED_LIB_EXPORT __declspec(dllexport)
-  #define VF_SHARED_LIB_LOCAL
-#else
-  #if __GNUC__ >= 4
-    #define VF_SHARED_LIB_IMPORT __attribute__ ((visibility ("default")))
-    #define VF_SHARED_LIB_EXPORT __attribute__ ((visibility ("default")))
-    #define VF_SHARED_LIB_LOCAL  __attribute__ ((visibility ("hidden")))
-  #else
-    #define VF_SHARED_LIB_IMPORT
-    #define VF_SHARED_LIB_EXPORT
-    #define VF_SHARED_LIB_LOCAL
-  #endif
-#endif
-
-// Now we use the generic helper definitions above to define VIRTUALFLUIDS_GPU_EXPORT, VF_PROTECTED
-// and VF_PRIVATE. VIRTUALFLUIDS_GPU_EXPORT is for symbols part of the public application programming
-// interface (API), VF_PROTECTED is for symbols used e.g. by public templated or
-// inlined code. These symbols must also be publicly available when compiling the
-// application. VF_PRIVATE are symbols for internal use inside the library only.
-
-#ifdef BUILD_SHARED_LIBS
-   // defined if VF is compiled as a shared library
-   #ifdef VF_SHARED_LIB_SELECT_IMPORTS
-      // defined if we are building the VF SHARED_LIB (instead of using it)
-      #define VIRTUALFLUIDS_GPU_EXPORT VF_SHARED_LIB_IMPORT
-   #else
-      #define VIRTUALFLUIDS_GPU_EXPORT VF_SHARED_LIB_EXPORT
-   #endif
-   #define VF_PRIVATE VF_SHARED_LIB_LOCAL
-#else
-   // VF_SHARED_LIB is not defined: this means VF is a static library
-   #define VIRTUALFLUIDS_GPU_EXPORT
-   #define VF_PRIVATE
-#endif
-#define VF_PROTECTED VIRTUALFLUIDS_GPU_EXPORT
-
 #endif
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
index b4d5a04da149d5f88a63ebb473dfd40910ea52da..eb16652deb94f7f84a68742cd0b8a80cddc8f6ab 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
@@ -37,6 +37,7 @@
 
 #include <VirtualFluidsDefinitions.h>
 #include "Core/PointerDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
 //! \brief Class forwarding for CudaMemoryManager, GridBuilder and Parameter
 class Parameter;
diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
index e8f1ab3adb2e57fa58fba1bdde18c096d9dc1191..322c5592f2c4b1162f5033f6d68d356cf11d5950 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
@@ -35,6 +35,7 @@
 
 #include <memory>
 #include "Core/PointerDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
 //! \brief Class forwarding for Parameter
 class Parameter;
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
index 4b076cc58ca2a51d661a728a04b17b55def7554f..bd1760ce39ab7a2f3103411bfdc5350850c79a3a 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
@@ -36,6 +36,7 @@
 #include <Core/PointerDefinitions.h>
 #include <VirtualFluidsDefinitions.h>
 #include "Output/LogWriter.hpp"
+#include "VirtualFluids_GPU_export.h"
 
 //! \brief Class forwarding for CudaMemoryManager, Parameter, GridProvider and DataWriter
 class CudaMemoryManager;
diff --git a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h b/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
index c783771e905c4876758eb621f8da938f9a9e8bea..6406cad772056bf243f609174f4b10d9e145d45a 100644
--- a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
+++ b/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
@@ -35,6 +35,7 @@
 
 #include "Core/PointerDefinitions.h"
 #include "Core/DataTypes.h"
+#include "VirtualFluids_GPU_export.h"
 
 //! \brief Class forwarding for CudaMemoryManager and Parameter
 class Parameter;
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index 91208a16c9ee664d7a3ecb06bf117a665c20e18f..6826684103e99315620fc979c875544315841366 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -36,6 +36,7 @@
 #include "LBM/LB.h"
 #include "Core/PointerDefinitions.h"
 #include "VirtualFluidsDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
 //! \struct ParameterStruct
 //! \brief struct holds and manages the LB-parameter of the simulation