diff --git a/gpu.cmake b/gpu.cmake
index 1be1fff37b1244c1a129581d2423d7734b005850..3e7fb2232b2e8502e00767121a4840a1c8189984 100644
--- a/gpu.cmake
+++ b/gpu.cmake
@@ -101,11 +101,6 @@ 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)
 
 IF( VF.BUILD_VF_GKS )
     # only use this with device of CC larger than 6.0
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index 9e876d834508af0d340bfe4cdd18bcc6a37d3b11..5d371078fc7b2043444443da146cb416f2eab373 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 5b46f8762d1edeb3fc42f2e7a7c310319b41b50f..308bae6b101cac96b23c9299a0e2611c6b0748c9 100644
--- a/src/gpu/GridGenerator/utilities/math/Math.cu
+++ b/src/gpu/GridGenerator/utilities/math/Math.cu
@@ -2,6 +2,8 @@
 
 #include <cmath>
 
+#include "VirtualFluidsDefinitions.h"
+
 HOSTDEVICE bool vf::Math::equal(const real& val1, const real& val2, real maxRelDiff)
 {
 	const real diff = std::fabs(val1 - val2);
diff --git a/src/gpu/Traffic/GPU/TrafficTimestep.h b/src/gpu/Traffic/GPU/TrafficTimestep.h
index a92cfd6e32602d74bb251288283957acdd36e497..4040b993c89f356d33e53c0afd8891926321f572 100644
--- a/src/gpu/Traffic/GPU/TrafficTimestep.h
+++ b/src/gpu/Traffic/GPU/TrafficTimestep.h
@@ -10,13 +10,14 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/PointerDefinitions.h"
 #include "Core/DataTypes.h"
+#include "Traffic_export.h"
 
 struct RoadNetworkData;
 class Sink;
 class Junction;
 class Source;
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficTimestep
+class TRAFFIC_EXPORT TrafficTimestep
 {
 private:
 
diff --git a/src/gpu/Traffic/Junction/Junction.h b/src/gpu/Traffic/Junction/Junction.h
index 620cf330b7a9965f16c38cdd3f7368c0a68eda15..6ec6e2f5f84fb5e415543d4b030f29b326eda7ef 100644
--- a/src/gpu/Traffic/Junction/Junction.h
+++ b/src/gpu/Traffic/Junction/Junction.h
@@ -5,10 +5,11 @@
 #include "Core/DataTypes.h"
 
 #include "JunctionData.h"
+#include "Traffic_export.h"
 
 class TrafficMovement;
 
-class VIRTUALFLUIDS_GPU_EXPORT Junction
+class TRAFFIC_EXPORT Junction
 {
 public:
 	virtual void checkOutCellIndices(const uint roadLength) const = 0;
diff --git a/src/gpu/Traffic/Junction/JunctionData.h b/src/gpu/Traffic/Junction/JunctionData.h
index 61e891f7a08aeacd0b61b513512139888f25eb72..fde3d50e24ab7154810ccc9d4e18588cbcf8f350 100644
--- a/src/gpu/Traffic/Junction/JunctionData.h
+++ b/src/gpu/Traffic/Junction/JunctionData.h
@@ -5,9 +5,10 @@
 #include <memory>
 
 #include "Utilities/RandomHelper.h"
+#include "Traffic_export.h"
 
 
-struct VIRTUALFLUIDS_GPU_EXPORT JunctionData
+struct TRAFFIC_EXPORT JunctionData
 {
 public:
 	std::vector<uint> inCellIndices;
diff --git a/src/gpu/Traffic/Junction/JunctionRandom.h b/src/gpu/Traffic/Junction/JunctionRandom.h
index 9096b23a9dc8c96684bbb67bb431ecc96d2cb5cb..e006aad4897b54bc52f1ec2d669e1fc90777c26f 100644
--- a/src/gpu/Traffic/Junction/JunctionRandom.h
+++ b/src/gpu/Traffic/Junction/JunctionRandom.h
@@ -6,10 +6,11 @@
 #include "Core/DataTypes.h"
 
 #include "Junction.h"
+#include "Traffic_export.h"
 
 class TrafficMovement;
 
-class VIRTUALFLUIDS_GPU_EXPORT JunctionRandom :
+class TRAFFIC_EXPORT JunctionRandom :
 	public Junction
 {
 
diff --git a/src/gpu/Traffic/Output/CarDisplay.h b/src/gpu/Traffic/Output/CarDisplay.h
index 966b5b2bc3c76df9592a945a3b609967aef5ec1a..78386d42b2bcea71100b6ec14fe754f49eaf02cc 100644
--- a/src/gpu/Traffic/Output/CarDisplay.h
+++ b/src/gpu/Traffic/Output/CarDisplay.h
@@ -8,8 +8,10 @@
 #include "Source/Source.h"
 #include "Junction/Junction.h"
 
+#include "Traffic_export.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT CarDisplay {
+
+class TRAFFIC_EXPORT CarDisplay {
 public:
 	CarDisplay(std::vector<int> **pcurrent, const uint safetyDistance);
 	~CarDisplay() {};
diff --git a/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h b/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h
index 57b45a0b9110699e0ceff046b57fe4bec2012ef6..50f9671080bf049baef6b37e509a54faa02d8110 100644
--- a/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h
+++ b/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h
@@ -2,7 +2,9 @@
 
 #include "ConcentrationOutwriter.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT ConcBySpeedAndAcceleration :
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT ConcBySpeedAndAcceleration :
 	public ConcentrationOutwriter
 {
 public:
diff --git a/src/gpu/Traffic/Output/ConcentrationByPosition.h b/src/gpu/Traffic/Output/ConcentrationByPosition.h
index a7cc1d5adb7261de6d5589fc194c0ccacc468b94..cd136d1689c6888b4da2097e02ee9bd2e97e2743 100644
--- a/src/gpu/Traffic/Output/ConcentrationByPosition.h
+++ b/src/gpu/Traffic/Output/ConcentrationByPosition.h
@@ -2,7 +2,9 @@
 
 #include "ConcentrationOutwriter.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT ConcentrationByPosition:
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT ConcentrationByPosition:
 	public ConcentrationOutwriter
 {
 public:
diff --git a/src/gpu/Traffic/Output/ConcentrationOutwriter.h b/src/gpu/Traffic/Output/ConcentrationOutwriter.h
index 5b08dc2c8ba0112a062a742734e96b828848afba..35fc8e27432d78873eb005db806b82c3bb696335 100644
--- a/src/gpu/Traffic/Output/ConcentrationOutwriter.h
+++ b/src/gpu/Traffic/Output/ConcentrationOutwriter.h
@@ -5,7 +5,9 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT ConcentrationOutwriter
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT ConcentrationOutwriter
 {
 public:
 	virtual void resetConcentrations();
diff --git a/src/gpu/Traffic/RoadNetwork/RoadMaker.h b/src/gpu/Traffic/RoadNetwork/RoadMaker.h
index df6ecda174382975e6fb58b51eed65b561d45cca..9d6d324608db6f348a6a8dacb1121c279ba6452f 100644
--- a/src/gpu/Traffic/RoadNetwork/RoadMaker.h
+++ b/src/gpu/Traffic/RoadNetwork/RoadMaker.h
@@ -5,8 +5,10 @@
 
 #include "Utilities/RandomHelper.h"
 
+#include "Traffic_export.h"
 
-struct VIRTUALFLUIDS_GPU_EXPORT RoadMaker :
+
+struct TRAFFIC_EXPORT RoadMaker :
 	public RoadNetworkData
 {
 public:
diff --git a/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h b/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
index 92928e5be9ce18fadbae28e72fee7c34a23fbea3..352cd5fc76918716b47a4e253144480e4deb5469 100644
--- a/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
+++ b/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
@@ -8,8 +8,10 @@
 #include "Sink/Sink.h"
 #include "Junction/Junction.h"
 
+#include "Traffic_export.h"
 
-struct VIRTUALFLUIDS_GPU_EXPORT RoadNetworkData
+
+struct TRAFFIC_EXPORT RoadNetworkData
 {
 protected:
 	friend class TrafficMovement;
diff --git a/src/gpu/Traffic/Sink/Sink.h b/src/gpu/Traffic/Sink/Sink.h
index c83c6a5f28004ff29acfd63b295bcae8a96cd4d2..792e32e8dd4031722d3a65da8148ffbd402e3e6c 100644
--- a/src/gpu/Traffic/Sink/Sink.h
+++ b/src/gpu/Traffic/Sink/Sink.h
@@ -2,7 +2,9 @@
 
 #include "SinkData.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT Sink
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT Sink
 {
 public:
 	virtual real getPossibilityBeingBlocked() const = 0;
diff --git a/src/gpu/Traffic/Sink/SinkData.h b/src/gpu/Traffic/Sink/SinkData.h
index 90b8d183777338a1502ec6254b15d011051d72fb..f035fa3151e7a394c51a6842cf2f35571698ede8 100644
--- a/src/gpu/Traffic/Sink/SinkData.h
+++ b/src/gpu/Traffic/Sink/SinkData.h
@@ -3,7 +3,9 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-struct VIRTUALFLUIDS_GPU_EXPORT SinkData {
+#include "Traffic_export.h"
+
+struct TRAFFIC_EXPORT SinkData {
 	uint sinkIndex;
 	real sinkBlockedPossibility;
 };
\ No newline at end of file
diff --git a/src/gpu/Traffic/Sink/SinkRandom.h b/src/gpu/Traffic/Sink/SinkRandom.h
index 5e3f10db83a007f4a8592e99ff2960fe4d799b3b..d6126acd1dc90b36ee1faed7f7d0ea3131f279c9 100644
--- a/src/gpu/Traffic/Sink/SinkRandom.h
+++ b/src/gpu/Traffic/Sink/SinkRandom.h
@@ -7,7 +7,9 @@
 
 #include "Utilities/RandomHelper.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT SinkRandom:
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT SinkRandom:
 	public Sink
 {
 private:
diff --git a/src/gpu/Traffic/Source/Source.h b/src/gpu/Traffic/Source/Source.h
index 8d7555f1b06a45d9ffc34e57877b989bedec3103..b4cad3a5c12d6c7f62fa17150316b542c52ccf77 100644
--- a/src/gpu/Traffic/Source/Source.h
+++ b/src/gpu/Traffic/Source/Source.h
@@ -2,8 +2,9 @@
 #include <VirtualFluidsDefinitions.h>
 
 #include "SourceData.h"
+#include "Traffic_export.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT Source
+class TRAFFIC_EXPORT Source
 {
 public:
 	virtual uint getIndex() const = 0;
diff --git a/src/gpu/Traffic/Source/SourceData.h b/src/gpu/Traffic/Source/SourceData.h
index 41bb34a9ca0a7c76d23530d0ed36fa6b5e24f512..e19dca7b1251bb2c11987f537842a8e1a4d6373b 100644
--- a/src/gpu/Traffic/Source/SourceData.h
+++ b/src/gpu/Traffic/Source/SourceData.h
@@ -4,9 +4,10 @@
 
 #include <memory>
 #include <vector>
+#include "Traffic_export.h"
 
 
-struct VIRTUALFLUIDS_GPU_EXPORT SourceData {
+struct TRAFFIC_EXPORT SourceData {
 	uint sourceIndex;
 	real sourcePossibility;
 	uint maxVelocity;
diff --git a/src/gpu/Traffic/Source/SourceRandom.h b/src/gpu/Traffic/Source/SourceRandom.h
index b8adc9355218f398f1497fdaf732e1a0138262d2..bed2077495c4bcf6ff4cde25826209047f8f1de4 100644
--- a/src/gpu/Traffic/Source/SourceRandom.h
+++ b/src/gpu/Traffic/Source/SourceRandom.h
@@ -6,9 +6,9 @@
 #include "Source.h"
 #include "Utilities/RandomHelper.h"
 
+#include "Traffic_export.h"
 
-
-class VIRTUALFLUIDS_GPU_EXPORT SourceRandom:
+class TRAFFIC_EXPORT SourceRandom:
 	public Source
 {
 private:
diff --git a/src/gpu/Traffic/TrafficMovement.h b/src/gpu/Traffic/TrafficMovement.h
index 772199354e06662e56c2cb52f705d29e26055e97..bdc2c8690521d4fc673d0650a484de35f0aee0f9 100644
--- a/src/gpu/Traffic/TrafficMovement.h
+++ b/src/gpu/Traffic/TrafficMovement.h
@@ -13,13 +13,14 @@
 #include "Output/ConcentrationOutwriter.h"
 #include "Output/CarDisplay.h"
 
+#include "Traffic_export.h"
 
 class TrafficLogger;
 //class ConcentrationOutwriter;
 //class CarDisplay;
 class TrafficTimestep;
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficMovement
+class TRAFFIC_EXPORT TrafficMovement
 {
 public:
 	TrafficMovement(std::shared_ptr<RoadNetworkData> road, const real dawdlePossibility);
diff --git a/src/gpu/Traffic/TrafficMovementFactory - Kopie.h b/src/gpu/Traffic/TrafficMovementFactory - Kopie.h
index a8b825ada55e070b8a7fcd2053c0bebc2f16af04..d813f367d01e560981a831dae7dc8465089e9012 100644
--- a/src/gpu/Traffic/TrafficMovementFactory - Kopie.h	
+++ b/src/gpu/Traffic/TrafficMovementFactory - Kopie.h	
@@ -9,8 +9,10 @@
 #include "TrafficMovementFactory.h"
 #include "GridGenerator/StreetPointFinder/StreetPointFinder.h"
 
+#include "Traffic_export.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactoryTest :
+
+class TRAFFIC_EXPORT TrafficMovementFactoryTest :
 	public TrafficMovementFactory {
 public:
 	TrafficMovementFactoryTest() {};
diff --git a/src/gpu/Traffic/TrafficMovementFactory.h b/src/gpu/Traffic/TrafficMovementFactory.h
index 9025ca607d9957156a486dfcb8a0ee9cbe229ea0..afa709ab0a515bd0c0eccd17a575d7774e6dfae0 100644
--- a/src/gpu/Traffic/TrafficMovementFactory.h
+++ b/src/gpu/Traffic/TrafficMovementFactory.h
@@ -6,12 +6,14 @@
 #include <vector>
 #include <memory>
 
+#include "Traffic_export.h"
+
 #include "GridGenerator/StreetPointFinder/StreetPointFinder.h"
 
 class TrafficMovement;
 class TrafficLogger;
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactory
+class TRAFFIC_EXPORT TrafficMovementFactory
 {
 public:
 	TrafficMovementFactory();
diff --git a/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h b/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
index ea779799cbde4cf00e6d26b28759b97fee8b1cf6..afb3854f8e6ff67ba1fe47fe37a9d1de5c548ac4 100644
--- a/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
+++ b/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
@@ -9,8 +9,10 @@
 #include "Core/DataTypes.h"
 #include "GridGenerator/StreetPointFinder/StreetPointFinder.h"
 
+#include "Traffic_export.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactoryTest :
+
+class TRAFFIC_EXPORT TrafficMovementFactoryTest :
 	public TrafficMovementFactory {
 public:
 	TrafficMovementFactoryTest() {};
diff --git a/src/gpu/Traffic/Utilities/ConsoleColor.h b/src/gpu/Traffic/Utilities/ConsoleColor.h
index e45f35df7aeba3cbaff37982f68d57bafa3410fd..8b5234bde9f42ac8d3daf24887c81dab6558639f 100644
--- a/src/gpu/Traffic/Utilities/ConsoleColor.h
+++ b/src/gpu/Traffic/Utilities/ConsoleColor.h
@@ -1,8 +1,8 @@
 #pragma once
 
+#include "Traffic_export.h"
 
-
-class VIRTUALFLUIDS_GPU_EXPORT ConsoleColor
+class TRAFFIC_EXPORT ConsoleColor
 {
 public:
 	static void setDefaultWhite();
diff --git a/src/gpu/Traffic/Utilities/Logger.h b/src/gpu/Traffic/Utilities/Logger.h
index c8d13e5c3da1d02fd1795925f5668bc7433a4006..3e97cd35af7fed176a77f239bd8a76ef1008e436 100644
--- a/src/gpu/Traffic/Utilities/Logger.h
+++ b/src/gpu/Traffic/Utilities/Logger.h
@@ -6,7 +6,9 @@
 #include <string>
 #include <fstream>
 
-class VIRTUALFLUIDS_GPU_EXPORT TrafficLogger
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT TrafficLogger
 {
 private:
 	std::string filename;	
diff --git a/src/gpu/Traffic/Utilities/RandomHelper.h b/src/gpu/Traffic/Utilities/RandomHelper.h
index 3d3dac8e22520f0452999419932e2bd5e5a967d9..4e0ae40aea18d797c93e2cfb097f2cd588c2416b 100644
--- a/src/gpu/Traffic/Utilities/RandomHelper.h
+++ b/src/gpu/Traffic/Utilities/RandomHelper.h
@@ -2,8 +2,9 @@
 
 #include <random>
 #include <VirtualFluidsDefinitions.h>
+#include "Traffic_export.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT RandomHelper
+class TRAFFIC_EXPORT RandomHelper
 {
 public:
 	static std::mt19937 make_engine();
diff --git a/src/gpu/Traffic/Utilities/VectorHelper.h b/src/gpu/Traffic/Utilities/VectorHelper.h
index 8a94ca138d63c9fb6cd74265aed6ff27c7eb1dc0..0a76fefd9a9b3525ff7093b04f7fe31ece1eacd0 100644
--- a/src/gpu/Traffic/Utilities/VectorHelper.h
+++ b/src/gpu/Traffic/Utilities/VectorHelper.h
@@ -5,7 +5,9 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-class VIRTUALFLUIDS_GPU_EXPORT VectorHelper
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT VectorHelper
 {
 public:
 	static void fillVector(std::vector<int>& vector, int insertNumber);
diff --git a/src/gpu/Traffic/Utilities/invalidInput_error.h b/src/gpu/Traffic/Utilities/invalidInput_error.h
index 641fc96b71cb26932ba3d43407a6eb8c0d1154c9..e8e7c7c5ae53e22f6ac4be1f4ca73567b7882336 100644
--- a/src/gpu/Traffic/Utilities/invalidInput_error.h
+++ b/src/gpu/Traffic/Utilities/invalidInput_error.h
@@ -4,7 +4,9 @@
 // using standard exceptions
 #include <stdexcept>
 
-class VIRTUALFLUIDS_GPU_EXPORT invalidInput_error :
+#include "Traffic_export.h"
+
+class TRAFFIC_EXPORT invalidInput_error :
 	public std::runtime_error
 {
 public:
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/Communication/Communicator.h b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
index 8f7f9fa3fb97db6bb99c5844168168acc87e1668..341d3980b7699f548f2aa708487855e101c93aef 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
@@ -7,6 +7,7 @@
 
 #include <mpi.h>
 
+#include "VirtualFluids_GPU_export.h"
 
 #include "LBM/LB.h"
 
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
index 064ffb4ac82c257ba517099910e21ec05a3b2ab0..bfa8be2e195fdd6791025ac32f5ad1981faef03a 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
@@ -6,8 +6,10 @@
 #include <memory>
 
 #include <VirtualFluidsDefinitions.h>
-#include "GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h"
+#include "Core/PointerDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
+#include <GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h>
 
 class Parameter;
 class GridBuilder;
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
index 0b5c66eaff4c8b11d02a449917504e9e6c6f6c97..9d1ce935226bb135e3c579a8afb141fb608a2c80 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
@@ -11,6 +11,8 @@
 
 #include "LBM/LB.h"
 
+#include "VirtualFluids_GPU_export.h"
+
 class Parameter;
 class BoundaryValues;
 class BoundaryQs;
diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
index 61892741d477bb6eef7e0c97a51ce1d6391d5939..de26c1f7dfdb73e79d4269b2185cea16a2cceb4b 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
@@ -4,6 +4,8 @@
 #include <vector>
 #include <string>
 #include <memory>
+#include "Core/PointerDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
 #include "LBM/LB.h"
 #include "LBM/D3Q27.h"
diff --git a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h b/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
index f9c6a5177e0e59dae0707465ca246fc04cd29bb8..2ba6fd2993b112d6aa90d9f9ae4445c2bd3e8bfb 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
@@ -8,6 +8,7 @@
 
 #include "Core/PointerDefinitions.h"
 #include "Core/DataTypes.h"
+#include "VirtualFluids_GPU_export.h"
 
 class Parameter;
 
diff --git a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
index 9022527337333ab512a2c17e21ce8b73081af930..fcb2c323674023f3689ad9ead336a1c8f6a4e23c 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
@@ -8,6 +8,7 @@
 
 #include "Core/PointerDefinitions.h"
 #include "Core/DataTypes.h"
+#include "VirtualFluids_GPU_export.h"
 
 class Parameter;
 
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
index d5602030346f90309f3baf39df41dc9929c86e5a..b799354b7db532090490db33cbbf1e67ae0e38a8 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
@@ -7,6 +7,8 @@
 #include <string>
 #include <vector>
 
+#include "VirtualFluids_GPU_export.h"
+
 class Kernel;
 class ADKernel;
 class Parameter;
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
index 0366685dbaae8e1f6c1f4e8cc013430176953170..04f2bc774769fc37770c660de6d202fb5c442f33 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
@@ -12,6 +12,7 @@
 #include "GPU/EnstrophyAnalyzer.h"
 #include "Utilities/Buffer2D.hpp"
 #include "LBM/LB.h"
+#include "VirtualFluids_GPU_export.h"
 
 class Communicator;
 class CudaMemoryManager;
diff --git a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h b/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
index a7d3a26fb1aa578c8f8b40df77172470f339d98b..88ee578c9553db9263f41dc5c64db528ab4c77ed 100644
--- a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
+++ b/src/gpu/VirtualFluids_GPU/Output/DataWriter.h
@@ -1,6 +1,9 @@
 #ifndef DATA_WRITER_H
 #define DATA_WRITER_H
 
+#include "Core/PointerDefinitions.h"
+#include "Core/DataTypes.h"
+#include "VirtualFluids_GPU_export.h"
 
 #include <memory>
 #include <vector>
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index f658e3eb8d39d8f284202f84a1436b9d88931b92..e81a21acffe5e09d945ef806a7d1dce8bce15179 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -24,6 +24,7 @@
 #include <curand_kernel.h>
 #include "Core/PointerDefinitions.h"
 #include "VirtualFluidsDefinitions.h"
+#include "VirtualFluids_GPU_export.h"
 
 #include "Kernel/Utilities/KernelType.h"
 
diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
index 141c2ddfa18c7870cff8e9f1a44dc51d0cf17750..6c43ac7dd23aedd0d9b65c1b4b0beaaf449a471d 100644
--- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
+++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
@@ -6,6 +6,8 @@
 #include <memory>
 #include <vector>
 
+#include "VirtualFluids_GPU_export.h"
+
 class PreProcessor;
 class Parameter;