From 70c14917f3965a807a823fb63ba9401eecb95502 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Mon, 20 Jul 2020 16:41:58 +0200
Subject: [PATCH] Changed VF_PUBLIC define to VIRTUALFLUIDS_GPU_EXPORT
 according to new export library naming scheme.

---
 src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h |  2 +-
 src/gpu/GksGpu/Analyzer/CupsAnalyzer.h        |  2 +-
 src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h   |  2 +-
 src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h    |  2 +-
 .../GksGpu/Analyzer/KineticEnergyAnalyzer.h   |  2 +-
 .../GksGpu/Analyzer/PointTimeSeriesAnalyzer.h |  2 +-
 .../Analyzer/PointTimeSeriesCollector.h       |  2 +-
 src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h  |  2 +-
 .../GksGpu/BoundaryConditions/AdiabaticWall.h |  2 +-
 .../BoundaryConditions/BoundaryCondition.h    |  2 +-
 .../BoundaryConditions/ConcreteHeatFlux.h     |  2 +-
 .../BoundaryConditions/CreepingMassFlux.h     |  2 +-
 .../GksGpu/BoundaryConditions/Extrapolation.h |  2 +-
 src/gpu/GksGpu/BoundaryConditions/HeatFlux.h  |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Inflow.h    |  2 +-
 .../BoundaryConditions/InflowComplete.h       |  2 +-
 .../BoundaryConditions/IsothermalWall.h       |  2 +-
 .../BoundaryConditions/MassCompensation.h     |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Open.h      |  2 +-
 .../PassiveScalarDiriclet.h                   |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Periodic.h  |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Pressure.h  |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Pressure2.h |  2 +-
 .../BoundaryConditions/SalinasVazquez.h       |  2 +-
 src/gpu/GksGpu/BoundaryConditions/Symmetry.h  |  2 +-
 src/gpu/GksGpu/CellUpdate/CellUpdate.h        |  2 +-
 src/gpu/GksGpu/Communication/Communicator.h   |  2 +-
 src/gpu/GksGpu/Communication/MpiUtility.h     |  2 +-
 src/gpu/GksGpu/CudaUtility/CudaUtility.h      |  2 +-
 src/gpu/GksGpu/DataBase/DataBase.h            |  4 +-
 src/gpu/GksGpu/DataBase/DataBaseAllocator.h   |  2 +-
 .../GksGpu/DataBase/DataBaseAllocatorCPU.h    |  2 +-
 .../GksGpu/DataBase/DataBaseAllocatorGPU.h    |  2 +-
 src/gpu/GksGpu/DataBase/DataBaseStruct.h      |  2 +-
 .../GksGpu/FluxComputation/FluxComputation.h  |  2 +-
 src/gpu/GksGpu/Initializer/Initializer.h      |  2 +-
 src/gpu/GksGpu/Interface/Interface.h          |  2 +-
 src/gpu/GksGpu/Parameters/Parameters.h        |  4 +-
 src/gpu/GksGpu/Restart/Restart.h              |  2 +-
 src/gpu/GksGpu/TimeStepping/NestedTimeStep.h  |  2 +-
 src/gpu/GksMeshAdapter/GksMeshAdapter.h       |  2 +-
 src/gpu/GksMeshAdapter/MeshCell.h             |  2 +-
 src/gpu/GksMeshAdapter/MeshFace.h             |  2 +-
 src/gpu/GksVtkAdapter/VTKAdapter.cpp          |  8 +-
 src/gpu/GksVtkAdapter/VTKAdapter.h            | 18 ++--
 src/gpu/GksVtkAdapter/VTKInterface.h          | 12 +--
 .../StreetPointFinder/JunctionReader.h        |  6 +-
 .../StreetPointFinder/SinkReader.h            |  4 +-
 .../StreetPointFinder/SourceReader.h          |  4 +-
 .../StreetPointFinder/StreetPointFinder.h     |  4 +-
 .../GridGenerator/geometries/Arrow/ArrowImp.h | 10 +--
 .../geometries/BoundingBox/BoundingBox.h      |  2 +-
 .../geometries/Conglomerate/Conglomerate.h    |  2 +-
 .../GridGenerator/geometries/Cuboid/Cuboid.h  |  2 +-
 src/gpu/GridGenerator/geometries/Object.h     |  2 +-
 .../GridGenerator/geometries/Sphere/Sphere.h  |  2 +-
 .../geometries/Triangle/Triangle.h            |  2 +-
 .../TriangularMesh/TriangularMesh.cu          |  2 +-
 .../TriangularMesh/TriangularMesh.h           | 24 +++---
 .../TriangularMesh/TriangularMeshStrategy.h   |  8 +-
 .../TriangleNeighborFinder.h                  |  8 +-
 .../triangleRefinement/TriangleRefinement.h   | 20 ++---
 .../GridGenerator/geometries/Vertex/Vertex.h  |  2 +-
 .../VerticalCylinder/VerticalCylinder.h       |  2 +-
 .../BoundaryConditions/BoundaryCondition.cpp  |  2 +-
 .../BoundaryConditions/BoundaryCondition.h    |  4 +-
 src/gpu/GridGenerator/grid/Field.h            |  2 +-
 src/gpu/GridGenerator/grid/Grid.h             |  2 +-
 .../grid/GridBuilder/GridBuilder.h            |  4 +-
 .../grid/GridBuilder/LevelGridBuilder.cpp     | 18 ++--
 .../grid/GridBuilder/LevelGridBuilder.h       | 82 +++++++++----------
 .../grid/GridBuilder/MultipleGridBuilder.cpp  |  4 +-
 .../grid/GridBuilder/MultipleGridBuilder.h    | 42 +++++-----
 src/gpu/GridGenerator/grid/GridFactory.h      |  2 +-
 src/gpu/GridGenerator/grid/GridImp.h          |  2 +-
 src/gpu/GridGenerator/grid/GridInterface.cu   |  2 +-
 src/gpu/GridGenerator/grid/GridInterface.h    | 24 +++---
 .../GridCpuStrategy/GridCpuStrategy.h         |  2 +-
 .../GridGpuStrategy/GridGpuStrategy.h         |  2 +-
 .../grid/GridStrategy/GridStrategy.h          |  2 +-
 .../grid/distributions/Distribution.h         |  2 +-
 .../GridGenerator/grid/partition/Partition.h  |  2 +-
 .../io/GridVTKWriter/GridVTKWriter.h          |  2 +-
 .../io/STLReaderWriter/STLReader.h            |  2 +-
 .../io/STLReaderWriter/STLWriter.h            |  2 +-
 .../SimulationFileNames.h                     |  2 +-
 .../SimulationFileWriter.h                    |  2 +-
 .../VTKWriterWrapper/PolyDataWriterWrapper.h  |  8 +-
 .../UnstructuredGridWrapper.h                 |  2 +-
 .../utilities/cuda/LaunchParameter.cuh        |  6 +-
 src/gpu/GridGenerator/utilities/math/Math.h   |  2 +-
 .../transformator/ArrowTransformator.h        |  2 +-
 .../utilities/transformator/Transformator.h   |  2 +-
 .../transformator/TransformatorImp.h          | 28 +++----
 src/gpu/Traffic/GPU/TrafficTimestep.h         |  2 +-
 src/gpu/Traffic/Junction/Junction.h           |  2 +-
 src/gpu/Traffic/Junction/JunctionData.h       |  2 +-
 src/gpu/Traffic/Junction/JunctionRandom.h     |  2 +-
 src/gpu/Traffic/Output/CarDisplay.h           |  2 +-
 .../Output/ConcBySpeedAndAcceleration.h       |  2 +-
 .../Traffic/Output/ConcentrationByPosition.h  |  2 +-
 .../Traffic/Output/ConcentrationOutwriter.h   |  2 +-
 src/gpu/Traffic/RoadNetwork/RoadMaker.h       |  2 +-
 src/gpu/Traffic/RoadNetwork/RoadNetworkData.h |  2 +-
 src/gpu/Traffic/Sink/Sink.h                   |  2 +-
 src/gpu/Traffic/Sink/SinkData.h               |  2 +-
 src/gpu/Traffic/Sink/SinkRandom.h             |  2 +-
 src/gpu/Traffic/Source/Source.h               |  2 +-
 src/gpu/Traffic/Source/SourceData.h           |  2 +-
 src/gpu/Traffic/Source/SourceRandom.h         |  2 +-
 src/gpu/Traffic/TrafficMovement.h             |  2 +-
 .../Traffic/TrafficMovementFactory - Kopie.h  |  2 +-
 src/gpu/Traffic/TrafficMovementFactory.h      |  2 +-
 .../Traffic/TrafficMovementFactoryTestRoads.h |  2 +-
 src/gpu/Traffic/Utilities/ConsoleColor.h      |  2 +-
 src/gpu/Traffic/Utilities/Logger.h            |  2 +-
 src/gpu/Traffic/Utilities/RandomHelper.h      |  2 +-
 src/gpu/Traffic/Utilities/VectorHelper.h      |  2 +-
 .../Traffic/Utilities/invalidInput_error.h    |  2 +-
 src/gpu/VirtualFluidsDefinitions.in.h         | 12 +--
 .../Communication/Communicator.h              |  2 +-
 .../DataStructureInitializer/GridProvider.h   |  2 +-
 .../GridReaderFiles/GridReader.h              |  2 +-
 .../GridReaderGenerator/GridGenerator.h       |  4 +-
 .../VirtualFluids_GPU/GPU/CudaMemoryManager.h |  2 +-
 .../VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h |  2 +-
 .../GPU/KineticEnergyAnalyzer.h               |  2 +-
 .../Utilities/KernelFactory/KernelFactory.h   |  2 +-
 .../KernelFactory/KernelFactoryImp.h          |  2 +-
 .../Mapper/ADKernelMapper/ADKernelMapper.h    |  2 +-
 .../Mapper/KernelMapper/KernelMapper.h        |  2 +-
 src/gpu/VirtualFluids_GPU/LBM/Simulation.h    |  2 +-
 .../VirtualFluids_GPU/Output/FileWriter.cpp   |  4 +-
 src/gpu/VirtualFluids_GPU/Output/FileWriter.h | 24 +++---
 .../VirtualFluids_GPU/Parameter/Parameter.h   |  2 +-
 .../PreProcessorFactory/PreProcessorFactory.h |  2 +-
 .../PreProcessorFactoryImp.h                  |  2 +-
 137 files changed, 308 insertions(+), 308 deletions(-)

diff --git a/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h b/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
index ae9a54098..c217227a3 100644
--- a/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
@@ -15,7 +15,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC ConvergenceAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT ConvergenceAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
index 41f06d32e..5438679c8 100644
--- a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
@@ -13,7 +13,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC CupsAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT CupsAnalyzer
 {
 private:
     SPtr<Timer> timer;
diff --git a/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h b/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
index 259362d78..16ffbeee7 100644
--- a/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
@@ -17,7 +17,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC EnstrophyAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT EnstrophyAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h b/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
index fcdeb82a6..5e990ed67 100644
--- a/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
@@ -19,7 +19,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC HeatFluxAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT HeatFluxAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h b/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
index d8c25160f..eb266ea5a 100644
--- a/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
@@ -15,7 +15,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC KineticEnergyAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT KineticEnergyAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h b/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
index 013c0be3c..9fbeeeca3 100644
--- a/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
@@ -29,7 +29,7 @@ struct PointTimeSeriesAnalyzerStruct
     uint cellIndex;
 };
 
-class VF_PUBLIC PointTimeSeriesAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT PointTimeSeriesAnalyzer
 {
 public:
 
diff --git a/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h b/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
index 364362220..022bd46c4 100644
--- a/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
+++ b/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
@@ -20,7 +20,7 @@ class  PointTimeSeriesAnalyzer;
 struct DataBase;
 struct Parameters;
 
-class VF_PUBLIC PointTimeSeriesCollector
+class VIRTUALFLUIDS_GPU_EXPORT PointTimeSeriesCollector
 {
 public:
 
diff --git a/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h b/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
index b7686496c..553183f7b 100644
--- a/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
@@ -39,7 +39,7 @@ struct TurbulenceAnalyzerStruct
     real* p ;
 };
 
-class VF_PUBLIC TurbulenceAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT TurbulenceAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h b/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
index 55cabf1b1..a171cc9f4 100644
--- a/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
+++ b/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
@@ -26,7 +26,7 @@ struct AdiabaticWallStruct
     bool useSecondCells;
 };
 
-struct VF_PUBLIC AdiabaticWall : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT AdiabaticWall : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
index 70be3a6a0..15c36c0ff 100644
--- a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
+++ b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
@@ -30,7 +30,7 @@ struct BoundaryConditionStruct
     uint* secondCells;
 };
 
-struct VF_PUBLIC BoundaryCondition : virtual public BoundaryConditionStruct, public std::enable_shared_from_this<BoundaryCondition>
+struct VIRTUALFLUIDS_GPU_EXPORT BoundaryCondition : virtual public BoundaryConditionStruct, public std::enable_shared_from_this<BoundaryCondition>
 {
     SPtr<DataBaseAllocator> myAllocator;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h b/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
index 899e82eb1..af5c6376e 100644
--- a/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
@@ -39,7 +39,7 @@ struct ConcreteHeatFluxStruct
     real ambientTemperature;
 };
 
-struct VF_PUBLIC ConcreteHeatFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT ConcreteHeatFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real* temperatures;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h b/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
index 7f60f7a88..7ac9692f1 100644
--- a/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
@@ -28,7 +28,7 @@ struct CreepingMassFluxStruct
     real lambda;
 };
 
-struct VF_PUBLIC CreepingMassFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT CreepingMassFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real rho;
     real velocity;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h b/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
index c089085c0..101f0296a 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
@@ -22,7 +22,7 @@ struct ExtrapolationStruct
     uint* secondCells;
 };
 
-struct VF_PUBLIC Extrapolation : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT Extrapolation : public BoundaryCondition //, public IsothermalWallStruct
 {
     Extrapolation( SPtr<DataBase> dataBase );
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h b/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
index ec3ee0b43..f4cfce3ab 100644
--- a/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
@@ -26,7 +26,7 @@ struct HeatFluxStruct
     real HRRPUA;
 };
 
-struct VF_PUBLIC HeatFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT HeatFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real HRRPUA;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Inflow.h b/src/gpu/GksGpu/BoundaryConditions/Inflow.h
index 27eb602df..637323f42 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Inflow.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Inflow.h
@@ -30,7 +30,7 @@ struct InflowStruct
     real a0, a1, a2;
 };
 
-struct VF_PUBLIC Inflow : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT Inflow : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
     real lambda;
diff --git a/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h b/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
index 04eead9f4..112a4ab3b 100644
--- a/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
+++ b/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
@@ -26,7 +26,7 @@ struct InflowCompleteStruct
     PrimitiveVariables prim;
 };
 
-struct VF_PUBLIC InflowComplete : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT InflowComplete : public BoundaryCondition //, public IsothermalWallStruct
 {
     PrimitiveVariables prim;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h b/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
index b6db01459..2d474cc89 100644
--- a/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
+++ b/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
@@ -29,7 +29,7 @@ struct IsothermalWallStruct
     bool useSecondCells;
 };
 
-struct VF_PUBLIC IsothermalWall : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT IsothermalWall : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
     real lambda;
diff --git a/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h b/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
index 3a10a2e48..21f04c256 100644
--- a/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
+++ b/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
@@ -28,7 +28,7 @@ struct MassCompensationStruct
     real lambda;
 };
 
-struct VF_PUBLIC MassCompensation : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT MassCompensation : public BoundaryCondition //, public IsothermalWallStruct
 {
     real rho;
     real velocity;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Open.h b/src/gpu/GksGpu/BoundaryConditions/Open.h
index 9630c7fdb..6c6862bf6 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Open.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Open.h
@@ -28,7 +28,7 @@ struct OpenStruct
     real velocityLimiter;
 };
 
-struct VF_PUBLIC Open : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT Open : public BoundaryCondition //, public IsothermalWallStruct
 {
     PrimitiveVariables prim;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h b/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
index c4cbeac9d..ef9cadf18 100644
--- a/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
+++ b/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
@@ -32,7 +32,7 @@ struct PassiveScalarDiricletStruct
     real S_2;
 };
 
-struct VF_PUBLIC PassiveScalarDiriclet : public BoundaryCondition
+struct VIRTUALFLUIDS_GPU_EXPORT PassiveScalarDiriclet : public BoundaryCondition
 {
     real S_1;
     real S_2;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Periodic.h b/src/gpu/GksGpu/BoundaryConditions/Periodic.h
index 73ff2242e..61f5ecf88 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Periodic.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Periodic.h
@@ -13,7 +13,7 @@
 
 namespace GksGpu{
 
-struct VF_PUBLIC Periodic : public BoundaryCondition
+struct VIRTUALFLUIDS_GPU_EXPORT Periodic : public BoundaryCondition
 {
     Periodic( SPtr<DataBase> dataBase ) : BoundaryCondition( dataBase ){}
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Pressure.h b/src/gpu/GksGpu/BoundaryConditions/Pressure.h
index 5e302b60e..0eca81ca4 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Pressure.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Pressure.h
@@ -31,7 +31,7 @@ struct PressureStruct
     real p0;
 };
 
-struct VF_PUBLIC Pressure : public BoundaryCondition
+struct VIRTUALFLUIDS_GPU_EXPORT Pressure : public BoundaryCondition
 {
     real p0;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Pressure2.h b/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
index 586108327..cad437652 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
@@ -31,7 +31,7 @@ struct Pressure2Struct
     real p0;
 };
 
-struct VF_PUBLIC Pressure2 : public BoundaryCondition
+struct VIRTUALFLUIDS_GPU_EXPORT Pressure2 : public BoundaryCondition
 {
     real p0;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h b/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
index 6e0f63906..f0ce0fa8a 100644
--- a/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
+++ b/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
@@ -29,7 +29,7 @@ struct SalinasVazquezStruct
     bool useSecondCells;
 };
 
-struct VF_PUBLIC SalinasVazquez : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT SalinasVazquez : public BoundaryCondition //, public IsothermalWallStruct
 {
     real lambdaMX;
     real lambdaPX;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Symmetry.h b/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
index 84385e0ac..db3dee0cd 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
@@ -24,7 +24,7 @@ struct SymmetryStruct
     char direction;
 };
 
-struct VF_PUBLIC Symmetry : public BoundaryCondition //, public IsothermalWallStruct
+struct VIRTUALFLUIDS_GPU_EXPORT Symmetry : public BoundaryCondition //, public IsothermalWallStruct
 {
     char direction;
 
diff --git a/src/gpu/GksGpu/CellUpdate/CellUpdate.h b/src/gpu/GksGpu/CellUpdate/CellUpdate.h
index a64613bbe..25f2a838e 100644
--- a/src/gpu/GksGpu/CellUpdate/CellUpdate.h
+++ b/src/gpu/GksGpu/CellUpdate/CellUpdate.h
@@ -11,7 +11,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC CellUpdate
+class VIRTUALFLUIDS_GPU_EXPORT CellUpdate
 {
 public:
 
diff --git a/src/gpu/GksGpu/Communication/Communicator.h b/src/gpu/GksGpu/Communication/Communicator.h
index 6aa564ae6..ecb7953e1 100644
--- a/src/gpu/GksGpu/Communication/Communicator.h
+++ b/src/gpu/GksGpu/Communication/Communicator.h
@@ -19,7 +19,7 @@ namespace GksGpu {
 class  DataBaseAllocator;
 struct DataBase;
 
-struct VF_PUBLIC Communicator : public std::enable_shared_from_this<Communicator>
+struct VIRTUALFLUIDS_GPU_EXPORT Communicator : public std::enable_shared_from_this<Communicator>
 {
     SPtr<DataBaseAllocator> myAllocator;
 
diff --git a/src/gpu/GksGpu/Communication/MpiUtility.h b/src/gpu/GksGpu/Communication/MpiUtility.h
index 6fbab567a..eaf565365 100644
--- a/src/gpu/GksGpu/Communication/MpiUtility.h
+++ b/src/gpu/GksGpu/Communication/MpiUtility.h
@@ -16,7 +16,7 @@ namespace GksGpu {
 class  DataBaseAllocator;
 struct DataBase;
 
-struct VF_PUBLIC MpiUtility
+struct VIRTUALFLUIDS_GPU_EXPORT MpiUtility
 {
     static int getMpiRankBeforeInit();
 
diff --git a/src/gpu/GksGpu/CudaUtility/CudaUtility.h b/src/gpu/GksGpu/CudaUtility/CudaUtility.h
index 2eb425e7c..8bd8dde04 100644
--- a/src/gpu/GksGpu/CudaUtility/CudaUtility.h
+++ b/src/gpu/GksGpu/CudaUtility/CudaUtility.h
@@ -10,7 +10,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC CudaUtility
+class VIRTUALFLUIDS_GPU_EXPORT CudaUtility
 {
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBase.h b/src/gpu/GksGpu/DataBase/DataBase.h
index 449e1f49b..4ecc2768a 100644
--- a/src/gpu/GksGpu/DataBase/DataBase.h
+++ b/src/gpu/GksGpu/DataBase/DataBase.h
@@ -28,7 +28,7 @@ struct PerLevelCounts;
 struct DataBaseStruct;
 struct Communicator;
 
-struct VF_PUBLIC DataBase : public std::enable_shared_from_this<DataBase>
+struct VIRTUALFLUIDS_GPU_EXPORT DataBase : public std::enable_shared_from_this<DataBase>
 {
     //////////////////////////////////////////////////////////////////////////
     // Management
@@ -147,7 +147,7 @@ struct VF_PUBLIC DataBase : public std::enable_shared_from_this<DataBase>
     std::string getDeviceType();
 };
 
-struct VF_PUBLIC PerLevelCounts
+struct VIRTUALFLUIDS_GPU_EXPORT PerLevelCounts
 {
     uint numberOfCells;
     uint startOfCells;
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocator.h b/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
index 305d9e661..0962ceb4d 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
@@ -17,7 +17,7 @@ struct DataBase;
 struct BoundaryCondition;
 struct Communicator;
 
-class VF_PUBLIC DataBaseAllocator {
+class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h b/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
index 35e89a3d4..fdefb3a07 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
@@ -10,7 +10,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC DataBaseAllocatorCPU : public DataBaseAllocator {
+class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocatorCPU : public DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h b/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
index ed7418b8c..359677195 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
@@ -10,7 +10,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC DataBaseAllocatorGPU : public DataBaseAllocator {
+class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocatorGPU : public DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseStruct.h b/src/gpu/GksGpu/DataBase/DataBaseStruct.h
index f80871920..6ab490490 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseStruct.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseStruct.h
@@ -7,7 +7,7 @@
 
 namespace GksGpu{ 
 
-struct VF_PUBLIC DataBaseStruct
+struct VIRTUALFLUIDS_GPU_EXPORT DataBaseStruct
 {
     uint  numberOfCells;
     uint  numberOfFaces;
diff --git a/src/gpu/GksGpu/FluxComputation/FluxComputation.h b/src/gpu/GksGpu/FluxComputation/FluxComputation.h
index 74bc57621..3c24532e9 100644
--- a/src/gpu/GksGpu/FluxComputation/FluxComputation.h
+++ b/src/gpu/GksGpu/FluxComputation/FluxComputation.h
@@ -11,7 +11,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC FluxComputation
+class VIRTUALFLUIDS_GPU_EXPORT FluxComputation
 {
 public:
 
diff --git a/src/gpu/GksGpu/Initializer/Initializer.h b/src/gpu/GksGpu/Initializer/Initializer.h
index 481d5410c..a005fb170 100644
--- a/src/gpu/GksGpu/Initializer/Initializer.h
+++ b/src/gpu/GksGpu/Initializer/Initializer.h
@@ -16,7 +16,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC Initializer
+class VIRTUALFLUIDS_GPU_EXPORT Initializer
 {
 public:
 
diff --git a/src/gpu/GksGpu/Interface/Interface.h b/src/gpu/GksGpu/Interface/Interface.h
index 4e14f9663..1e4fcf7dc 100644
--- a/src/gpu/GksGpu/Interface/Interface.h
+++ b/src/gpu/GksGpu/Interface/Interface.h
@@ -10,7 +10,7 @@
 
 namespace GksGpu {
 
-class VF_PUBLIC Interface
+class VIRTUALFLUIDS_GPU_EXPORT Interface
 {
 public:
     static void runFineToCoarse( SPtr<DataBase> dataBase, uint level );
diff --git a/src/gpu/GksGpu/Parameters/Parameters.h b/src/gpu/GksGpu/Parameters/Parameters.h
index ec1dae008..b89885b96 100644
--- a/src/gpu/GksGpu/Parameters/Parameters.h
+++ b/src/gpu/GksGpu/Parameters/Parameters.h
@@ -8,13 +8,13 @@
 
 namespace GksGpu {
 
-enum class VF_PUBLIC ViscosityModel{
+enum class VIRTUALFLUIDS_GPU_EXPORT ViscosityModel{
     constant,
     sutherlandsLaw,
     sutherlandsLaw2
 };
 
-struct  VF_PUBLIC Parameters
+struct  VIRTUALFLUIDS_GPU_EXPORT Parameters
 {
 
     real mu = real(0.01);
diff --git a/src/gpu/GksGpu/Restart/Restart.h b/src/gpu/GksGpu/Restart/Restart.h
index 6eb563620..d414e2b16 100644
--- a/src/gpu/GksGpu/Restart/Restart.h
+++ b/src/gpu/GksGpu/Restart/Restart.h
@@ -13,7 +13,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VF_PUBLIC Restart
+class VIRTUALFLUIDS_GPU_EXPORT Restart
 {
 
 public:
diff --git a/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h b/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
index 400a1a904..b139d1d80 100644
--- a/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
+++ b/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
@@ -10,7 +10,7 @@
 #include "Parameters/Parameters.h"
 namespace GksGpu{ 
 
-class VF_PUBLIC TimeStepping
+class VIRTUALFLUIDS_GPU_EXPORT TimeStepping
 {
 public:
 
diff --git a/src/gpu/GksMeshAdapter/GksMeshAdapter.h b/src/gpu/GksMeshAdapter/GksMeshAdapter.h
index 6d980e62e..3efa7f98a 100644
--- a/src/gpu/GksMeshAdapter/GksMeshAdapter.h
+++ b/src/gpu/GksMeshAdapter/GksMeshAdapter.h
@@ -15,7 +15,7 @@
 
 class MultipleGridBuilder;
 
-class VF_PUBLIC GksMeshAdapter{
+class VIRTUALFLUIDS_GPU_EXPORT GksMeshAdapter{
 
 public:
 
diff --git a/src/gpu/GksMeshAdapter/MeshCell.h b/src/gpu/GksMeshAdapter/MeshCell.h
index b2df98494..0738683c3 100644
--- a/src/gpu/GksMeshAdapter/MeshCell.h
+++ b/src/gpu/GksMeshAdapter/MeshCell.h
@@ -7,7 +7,7 @@
 #include "Core/VectorTypes.h"
 #include "Core/ArrayTypes.h"
 
-struct VF_PUBLIC MeshCell{
+struct VIRTUALFLUIDS_GPU_EXPORT MeshCell{
 
     uint level;
     uint gridIdx;
diff --git a/src/gpu/GksMeshAdapter/MeshFace.h b/src/gpu/GksMeshAdapter/MeshFace.h
index 78e88a8ae..b322bba31 100644
--- a/src/gpu/GksMeshAdapter/MeshFace.h
+++ b/src/gpu/GksMeshAdapter/MeshFace.h
@@ -5,7 +5,7 @@
 #include "Core/VectorTypes.h"
 #include "Core/ArrayTypes.h"
 
-struct VF_PUBLIC MeshFace
+struct VIRTUALFLUIDS_GPU_EXPORT MeshFace
 {
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/gpu/GksVtkAdapter/VTKAdapter.cpp b/src/gpu/GksVtkAdapter/VTKAdapter.cpp
index 6e20fdd5a..2e8495132 100644
--- a/src/gpu/GksVtkAdapter/VTKAdapter.cpp
+++ b/src/gpu/GksVtkAdapter/VTKAdapter.cpp
@@ -266,7 +266,7 @@ void writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename )
     writer->Write();
 }
 
-void VF_PUBLIC writeVtkParallelUnstructuredGridSummaryFile(vtkGridPtr grid, std::string filename, uint mpiWorldSize)
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkParallelUnstructuredGridSummaryFile(vtkGridPtr grid, std::string filename, uint mpiWorldSize)
 {
     uint numberOfArrays = grid->GetCellData()->GetNumberOfArrays();
 
@@ -429,7 +429,7 @@ void writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "done!\n";
 }
 
-void VF_PUBLIC writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".pvtu" << " ... \n";
 
@@ -534,7 +534,7 @@ void writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "done!\n";
 }
 
-void VF_PUBLIC writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
+void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".pvtu" << " ... \n";
 
@@ -712,7 +712,7 @@ void mapFlowField(std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu
     }
 }
 
-void VF_PUBLIC writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, GksGpu::Parameters parameters, int mode, std::string filename)
+void VIRTUALFLUIDS_GPU_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, GksGpu::Parameters parameters, int mode, std::string filename)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".vtu" << " ... \n";
 
diff --git a/src/gpu/GksVtkAdapter/VTKAdapter.h b/src/gpu/GksVtkAdapter/VTKAdapter.h
index d5effc8d8..eebab036a 100644
--- a/src/gpu/GksVtkAdapter/VTKAdapter.h
+++ b/src/gpu/GksVtkAdapter/VTKAdapter.h
@@ -41,31 +41,31 @@ struct rgbColor
     unsigned char b;
 };
 
-vtkGridPtr VF_PUBLIC getVtkUnstructuredOctGrid( SPtr<GksGpu::DataBase> dataBase, bool excludeGhostCells = false );
+vtkGridPtr VIRTUALFLUIDS_GPU_EXPORT getVtkUnstructuredOctGrid( SPtr<GksGpu::DataBase> dataBase, bool excludeGhostCells = false );
 
-void VF_PUBLIC addScalarIntCellData( vtkGridPtr grid, 
+void VIRTUALFLUIDS_GPU_EXPORT addScalarIntCellData( vtkGridPtr grid,
                                      uint numberOfCells, 
                                      std::string name, 
                                      std::function<int(uint)> getData );
 
-void VF_PUBLIC addScalarRealCellData( vtkGridPtr grid, 
+void VIRTUALFLUIDS_GPU_EXPORT addScalarRealCellData( vtkGridPtr grid,
                                       uint numberOfCells, 
                                       std::string name, 
                                       std::function<real(uint)> getData );
 
-void VF_PUBLIC addVectorCellData( vtkGridPtr grid, 
+void VIRTUALFLUIDS_GPU_EXPORT addVectorCellData( vtkGridPtr grid,
                                   uint numberOfCells, 
                                   std::string name, 
                                   std::function<Vec3(uint)> getData );
 
-void VF_PUBLIC addBaseData( vtkGridPtr grid, SPtr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters );
+void VIRTUALFLUIDS_GPU_EXPORT addBaseData( vtkGridPtr grid, SPtr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters );
 
-void VF_PUBLIC writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename );
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename );
 
-void VF_PUBLIC writeVtkParallelUnstructuredGridSummaryFile( vtkGridPtr grid, std::string filename, uint mpiWorldSize );
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkParallelUnstructuredGridSummaryFile( vtkGridPtr grid, std::string filename, uint mpiWorldSize );
 
-rgbColor VF_PUBLIC colorMapCoolToWarmExtended( double value, double min, double max );
+rgbColor VIRTUALFLUIDS_GPU_EXPORT colorMapCoolToWarmExtended( double value, double min, double max );
 
-void VF_PUBLIC writePNG( vtkDataObject* inputData, int nx, int ny, double L, double H, std::string filename );
+void VIRTUALFLUIDS_GPU_EXPORT writePNG( vtkDataObject* inputData, int nx, int ny, double L, double H, std::string filename );
 
 #endif
\ No newline at end of file
diff --git a/src/gpu/GksVtkAdapter/VTKInterface.h b/src/gpu/GksVtkAdapter/VTKInterface.h
index 1680bd511..ecd6aec47 100644
--- a/src/gpu/GksVtkAdapter/VTKInterface.h
+++ b/src/gpu/GksVtkAdapter/VTKInterface.h
@@ -11,30 +11,30 @@ class TurbulenceAnalyzer;
 struct ConcreteHeatFlux;
 }
 
-void VF_PUBLIC writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, 
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                            GksGpu::Parameters parameters, 
                            int mode, 
                            std::string filename);
 
-void VF_PUBLIC writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, 
+void VIRTUALFLUIDS_GPU_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
                                               GksGpu::Parameters parameters, 
                                               std::string filename,
                                               uint mpiWorldSize);
 
-void VF_PUBLIC writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, 
+void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                                      std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,
                                      int mode, 
                                      std::string filename);
 
-void VF_PUBLIC writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, 
+void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
                                                         std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,
                                                         GksGpu::Parameters parameters, 
                                                         std::string filename,
                                                         uint mpiWorldSize);
 
-void VF_PUBLIC mapFlowField( std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu::DataBase> target );
+void VIRTUALFLUIDS_GPU_EXPORT mapFlowField( std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu::DataBase> target );
 
-void VF_PUBLIC writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, 
+void VIRTUALFLUIDS_GPU_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                                            std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, 
                                            GksGpu::Parameters parameters, 
                                            int mode, 
diff --git a/src/gpu/GridGenerator/StreetPointFinder/JunctionReader.h b/src/gpu/GridGenerator/StreetPointFinder/JunctionReader.h
index a53d27521..5d59f2d33 100644
--- a/src/gpu/GridGenerator/StreetPointFinder/JunctionReader.h
+++ b/src/gpu/GridGenerator/StreetPointFinder/JunctionReader.h
@@ -10,7 +10,7 @@
 
 #include <VirtualFluidsDefinitions.h>
 
-struct VF_PUBLIC JunctionReaderData
+struct VIRTUALFLUIDS_GPU_EXPORT JunctionReaderData
 {
 	std::vector<uint> inCells;
 	std::vector<uint> outCells;
@@ -21,7 +21,7 @@ struct VF_PUBLIC JunctionReaderData
 };
 
 
-struct VF_PUBLIC Neighbors
+struct VIRTUALFLUIDS_GPU_EXPORT Neighbors
 {
 	std::vector<int> cells;
 	std::vector<int> neighbors;
@@ -29,7 +29,7 @@ struct VF_PUBLIC Neighbors
 
 
 
-struct VF_PUBLIC JunctionReader
+struct VIRTUALFLUIDS_GPU_EXPORT JunctionReader
 {
 	std::vector<JunctionReaderData> junctions;
 	Neighbors specialNeighbors;
diff --git a/src/gpu/GridGenerator/StreetPointFinder/SinkReader.h b/src/gpu/GridGenerator/StreetPointFinder/SinkReader.h
index aa5e31519..0e1d851ba 100644
--- a/src/gpu/GridGenerator/StreetPointFinder/SinkReader.h
+++ b/src/gpu/GridGenerator/StreetPointFinder/SinkReader.h
@@ -10,13 +10,13 @@
 
 #include <VirtualFluidsDefinitions.h>
 
-struct VF_PUBLIC SinkReaderData{
+struct VIRTUALFLUIDS_GPU_EXPORT SinkReaderData{
 	uint sinkIndex;
 	float sinkBlockedPossibility;
 	SinkReaderData(uint sinkIndex, float sinkBlockedPossibility);
 };
 
-struct VF_PUBLIC SinkReader
+struct VIRTUALFLUIDS_GPU_EXPORT SinkReader
 {
 	std::vector<SinkReaderData> sinks;
 	StreetPointFinder* streetPointFinder;
diff --git a/src/gpu/GridGenerator/StreetPointFinder/SourceReader.h b/src/gpu/GridGenerator/StreetPointFinder/SourceReader.h
index de0e6acab..79aa6681d 100644
--- a/src/gpu/GridGenerator/StreetPointFinder/SourceReader.h
+++ b/src/gpu/GridGenerator/StreetPointFinder/SourceReader.h
@@ -10,13 +10,13 @@
 
 #include <VirtualFluidsDefinitions.h>
 
-struct VF_PUBLIC SourceReaderData {
+struct VIRTUALFLUIDS_GPU_EXPORT SourceReaderData {
 	unsigned int sourceIndex;
 	float sourcePossibility;
 	SourceReaderData(unsigned int sourceIndex, float sourcePossibility);
 };
 
-struct VF_PUBLIC SourceReader
+struct VIRTUALFLUIDS_GPU_EXPORT SourceReader
 {
 	std::vector<SourceReaderData> sources;
 	StreetPointFinder* streetPointFinder;
diff --git a/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.h b/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.h
index b90840b8e..82a169f60 100644
--- a/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.h
+++ b/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.h
@@ -11,7 +11,7 @@
 
 class Grid;
 
-struct VF_PUBLIC Street
+struct VIRTUALFLUIDS_GPU_EXPORT Street
 {
     // The start and end coordinates are stored for cell centers!
     //
@@ -39,7 +39,7 @@ struct VF_PUBLIC Street
     void findIndicesLB( SPtr<Grid> grid, real initialSearchHeight);
 };
 
-struct VF_PUBLIC StreetPointFinder
+struct VIRTUALFLUIDS_GPU_EXPORT StreetPointFinder
 {
     std::vector<Street> streets;
 
diff --git a/src/gpu/GridGenerator/geometries/Arrow/ArrowImp.h b/src/gpu/GridGenerator/geometries/Arrow/ArrowImp.h
index 61e715866..dccb9b9e2 100644
--- a/src/gpu/GridGenerator/geometries/Arrow/ArrowImp.h
+++ b/src/gpu/GridGenerator/geometries/Arrow/ArrowImp.h
@@ -12,13 +12,13 @@ struct Vertex;
 class ArrowImp : public Arrow 
 {
 public:
-	VF_PUBLIC virtual ~ArrowImp();
-	VF_PUBLIC static std::shared_ptr<Arrow> make(const Vertex &start, const Vertex &end);
+	VIRTUALFLUIDS_GPU_EXPORT virtual ~ArrowImp();
+	VIRTUALFLUIDS_GPU_EXPORT static std::shared_ptr<Arrow> make(const Vertex &start, const Vertex &end);
 
-	VF_PUBLIC std::shared_ptr<Vertex> getStart() const;
-	VF_PUBLIC std::shared_ptr<Vertex> getEnd() const;
+	VIRTUALFLUIDS_GPU_EXPORT std::shared_ptr<Vertex> getStart() const;
+	VIRTUALFLUIDS_GPU_EXPORT std::shared_ptr<Vertex> getEnd() const;
 
-	VF_PUBLIC void print() const;
+	VIRTUALFLUIDS_GPU_EXPORT void print() const;
 private:
 	ArrowImp(const Vertex &start, const Vertex &end);
 
diff --git a/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBox.h b/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBox.h
index b25859e51..3c5946ae4 100644
--- a/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBox.h
+++ b/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBox.h
@@ -10,7 +10,7 @@ struct Vertex;
 struct Triangle;
 
 
-class VF_PUBLIC BoundingBox
+class VIRTUALFLUIDS_GPU_EXPORT BoundingBox
 {
 public:
 	real minX;
diff --git a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
index 1c965f7ac..77512ba3e 100644
--- a/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
+++ b/src/gpu/GridGenerator/geometries/Conglomerate/Conglomerate.h
@@ -13,7 +13,7 @@
 
 #define MAX_NUMBER_OF_OBJECTS 20
 
-class VF_PUBLIC Conglomerate : public Object
+class VIRTUALFLUIDS_GPU_EXPORT Conglomerate : public Object
 {
 public:              
     HOSTDEVICE Conglomerate();
diff --git a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
index 8d5922bd9..5d2879ea6 100644
--- a/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
+++ b/src/gpu/GridGenerator/geometries/Cuboid/Cuboid.h
@@ -11,7 +11,7 @@
 
 #include "geometries/Object.h"
 
-class VF_PUBLIC Cuboid : public Object
+class VIRTUALFLUIDS_GPU_EXPORT Cuboid : public Object
 {
 public:              
     HOSTDEVICE Cuboid(const double& minX1, const double& minX2, const double& minX3, const double& maxX1,const double& maxX2, const double& maxX3);
diff --git a/src/gpu/GridGenerator/geometries/Object.h b/src/gpu/GridGenerator/geometries/Object.h
index 175f06b4d..38fd27fe6 100644
--- a/src/gpu/GridGenerator/geometries/Object.h
+++ b/src/gpu/GridGenerator/geometries/Object.h
@@ -14,7 +14,7 @@
 class GridImp;
 struct Vertex;
 
-class VF_PUBLIC Object
+class VIRTUALFLUIDS_GPU_EXPORT Object
 {
 public:
     HOSTDEVICE virtual ~Object() {}
diff --git a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
index 949c27c4d..865da7d3b 100644
--- a/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
+++ b/src/gpu/GridGenerator/geometries/Sphere/Sphere.h
@@ -11,7 +11,7 @@
 
 #include "geometries/Object.h"
 
-class VF_PUBLIC Sphere : public Object
+class VIRTUALFLUIDS_GPU_EXPORT Sphere : public Object
 {
 public:
     HOSTDEVICE Sphere(const double& centerX, const double& centerY, const double& centerZ, const double& radius);
diff --git a/src/gpu/GridGenerator/geometries/Triangle/Triangle.h b/src/gpu/GridGenerator/geometries/Triangle/Triangle.h
index 66932840f..ee16b2f17 100644
--- a/src/gpu/GridGenerator/geometries/Triangle/Triangle.h
+++ b/src/gpu/GridGenerator/geometries/Triangle/Triangle.h
@@ -9,7 +9,7 @@
 
 class TriangleMemento;
 
-struct VF_PUBLIC Triangle
+struct VIRTUALFLUIDS_GPU_EXPORT Triangle
 {
     Vertex v1, v2, v3, normal;
     real alphaAngles[3];
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
index 91144b8fe..66e213eb0 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
@@ -119,7 +119,7 @@ HOSTDEVICE GbTriFaceMesh3D* TriangularMesh::getGbTriFaceMesh3D() const
     return this->VF_GbTriFaceMesh3D.get();
 }
 
-CUDA_HOST VF_PUBLIC void TriangularMesh::generateGbTriFaceMesh3D()
+CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT void TriangularMesh::generateGbTriFaceMesh3D()
 {
     if( this->VF_GbTriFaceMesh3D ) return;
 
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
index 0e5382ac7..a67ca01cb 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.h
@@ -24,16 +24,16 @@ class TriangularMesh : public Object
 {
 public:
 
-    VF_PUBLIC static TriangularMesh* make(const std::string& fileName, const std::vector<uint> ignorePatches = std::vector<uint>());
-	VF_PUBLIC TriangularMesh();
-    VF_PUBLIC TriangularMesh(const std::string& inputPath, const std::vector<uint> ignorePatches = std::vector<uint>());
-	VF_PUBLIC TriangularMesh(const std::string& inputPath, const BoundingBox &box);
-	HOSTDEVICE VF_PUBLIC ~TriangularMesh();
+    VIRTUALFLUIDS_GPU_EXPORT static TriangularMesh* make(const std::string& fileName, const std::vector<uint> ignorePatches = std::vector<uint>());
+	VIRTUALFLUIDS_GPU_EXPORT TriangularMesh();
+    VIRTUALFLUIDS_GPU_EXPORT TriangularMesh(const std::string& inputPath, const std::vector<uint> ignorePatches = std::vector<uint>());
+	VIRTUALFLUIDS_GPU_EXPORT TriangularMesh(const std::string& inputPath, const BoundingBox &box);
+	HOSTDEVICE VIRTUALFLUIDS_GPU_EXPORT ~TriangularMesh();
 
-    VF_PUBLIC uint getNumberOfTriangles() const;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfTriangles() const;
 
-	VF_PUBLIC void setTriangles(std::vector<Triangle> triangles);
-	VF_PUBLIC void setMinMax(BoundingBox minmax);
+	VIRTUALFLUIDS_GPU_EXPORT void setTriangles(std::vector<Triangle> triangles);
+	VIRTUALFLUIDS_GPU_EXPORT void setMinMax(BoundingBox minmax);
 
 	std::vector<Triangle> triangleVec;
 	Triangle *triangles;
@@ -42,13 +42,13 @@ public:
 
     SPtr<GbTriFaceMesh3D> VF_GbTriFaceMesh3D;
 
-    CUDA_HOST VF_PUBLIC bool operator==(const TriangularMesh &geometry) const;
+    CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT bool operator==(const TriangularMesh &geometry) const;
 
-    VF_PUBLIC void findNeighbors();
+    VIRTUALFLUIDS_GPU_EXPORT void findNeighbors();
 
-    HOSTDEVICE VF_PUBLIC GbTriFaceMesh3D* getGbTriFaceMesh3D() const;
+    HOSTDEVICE VIRTUALFLUIDS_GPU_EXPORT GbTriFaceMesh3D* getGbTriFaceMesh3D() const;
 
-    CUDA_HOST VF_PUBLIC void generateGbTriFaceMesh3D();
+    CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT void generateGbTriFaceMesh3D();
 
 private:
 	
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.h b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.h
index cd5edbce9..db6ba97e0 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.h
@@ -7,7 +7,7 @@ class GridImp;
 class TriangularMesh;
 struct Triangle;
 
-class VF_PUBLIC TriangularMeshDiscretizationStrategy
+class VIRTUALFLUIDS_GPU_EXPORT TriangularMeshDiscretizationStrategy
 {
 public:
     TriangularMeshDiscretizationStrategy() {}
@@ -26,7 +26,7 @@ private:
 
 
 
-class VF_PUBLIC PointInObjectDiscretizationStrategy : public TriangularMeshDiscretizationStrategy
+class VIRTUALFLUIDS_GPU_EXPORT PointInObjectDiscretizationStrategy : public TriangularMeshDiscretizationStrategy
 {
 public:
     PointInObjectDiscretizationStrategy() {}
@@ -35,7 +35,7 @@ public:
     virtual void doDiscretize(TriangularMesh* triangularMesh, GridImp* grid, char InnerType, char OuterType);
 };
 
-class VF_PUBLIC RayCastingDiscretizationStrategy : public TriangularMeshDiscretizationStrategy
+class VIRTUALFLUIDS_GPU_EXPORT RayCastingDiscretizationStrategy : public TriangularMeshDiscretizationStrategy
 {
 public:
     RayCastingDiscretizationStrategy() {}
@@ -44,7 +44,7 @@ public:
     virtual void doDiscretize(TriangularMesh* triangularMesh, GridImp* grid, char InnerType, char OuterType);
 };
 
-class VF_PUBLIC PointUnderTriangleStrategy : public TriangularMeshDiscretizationStrategy
+class VIRTUALFLUIDS_GPU_EXPORT PointUnderTriangleStrategy : public TriangularMeshDiscretizationStrategy
 {
 public:
     PointUnderTriangleStrategy() {}
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/triangleNeighborFinder/TriangleNeighborFinder.h b/src/gpu/GridGenerator/geometries/TriangularMesh/triangleNeighborFinder/TriangleNeighborFinder.h
index f9fe45096..f58306292 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/triangleNeighborFinder/TriangleNeighborFinder.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/triangleNeighborFinder/TriangleNeighborFinder.h
@@ -22,14 +22,14 @@ struct IntegerPtr2D {
 class TriangleNeighborFinder
 {
 public:
-    VF_PUBLIC TriangleNeighborFinder(Triangle *triangles, int size);
-    VF_PUBLIC ~TriangleNeighborFinder();
+    VIRTUALFLUIDS_GPU_EXPORT TriangleNeighborFinder(Triangle *triangles, int size);
+    VIRTUALFLUIDS_GPU_EXPORT ~TriangleNeighborFinder();
     
     std::vector<int> getTriangleIDsWithCommonVertex(int vertexID) const;
     std::vector< std::vector<Triangle> > getTrianglesPerVertex() const;
 
-    void VF_PUBLIC fillWithNeighborIndices(IntegerPtr2D *indices, Triangle *triangles);
-	void VF_PUBLIC fillWithNeighborAngles(TriangularMesh *geom) const;
+    void VIRTUALFLUIDS_GPU_EXPORT fillWithNeighborIndices(IntegerPtr2D *indices, Triangle *triangles);
+	void VIRTUALFLUIDS_GPU_EXPORT fillWithNeighborAngles(TriangularMesh *geom) const;
 
     void printSortedToTriangles() const;
     void printSortedInSpace() const;
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/triangleRefinement/TriangleRefinement.h b/src/gpu/GridGenerator/geometries/TriangularMesh/triangleRefinement/TriangleRefinement.h
index a158169c0..911e2a91d 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/triangleRefinement/TriangleRefinement.h
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/triangleRefinement/TriangleRefinement.h
@@ -14,17 +14,17 @@ struct IntegerPtr2D;
 class  TriangleRefinement
 {
 public:
-    VF_PUBLIC TriangleRefinement(std::vector<Triangle> *triangles);
-    VF_PUBLIC ~TriangleRefinement();
+    VIRTUALFLUIDS_GPU_EXPORT TriangleRefinement(std::vector<Triangle> *triangles);
+    VIRTUALFLUIDS_GPU_EXPORT ~TriangleRefinement();
 
-    void VF_PUBLIC refine(int iTriangle);
-    static void VF_PUBLIC refine(Triangle t, Triangle &firstNewTriangle, Triangle &secondNewTriangle);
+    void VIRTUALFLUIDS_GPU_EXPORT refine(int iTriangle);
+    static void VIRTUALFLUIDS_GPU_EXPORT refine(Triangle t, Triangle &firstNewTriangle, Triangle &secondNewTriangle);
     
-    void VF_PUBLIC refineUntilMinDistance(double d_min);
-    void VF_PUBLIC refineUntilcountTriangle(int countTri);
-    void VF_PUBLIC redoubleTriangles();
+    void VIRTUALFLUIDS_GPU_EXPORT refineUntilMinDistance(double d_min);
+    void VIRTUALFLUIDS_GPU_EXPORT refineUntilcountTriangle(int countTri);
+    void VIRTUALFLUIDS_GPU_EXPORT redoubleTriangles();
 
-    static VF_PUBLIC Vertex getHalfVertex(const Vertex &v, const Vertex &w);
+    static VIRTUALFLUIDS_GPU_EXPORT Vertex getHalfVertex(const Vertex &v, const Vertex &w);
 
 private:
     std::vector<Triangle> *triangles;
@@ -39,8 +39,8 @@ private:
     int findCommonEdgeFromTriangles(int indexNeighbor, int iTriangle);
 
 public:
-    static int VF_PUBLIC getEdgeWithLongestDistance(Triangle &t);
-    static real VF_PUBLIC getLongestEdgeDistance(Triangle &t);
+    static int VIRTUALFLUIDS_GPU_EXPORT getEdgeWithLongestDistance(Triangle &t);
+    static real VIRTUALFLUIDS_GPU_EXPORT getLongestEdgeDistance(Triangle &t);
 };
 
 
diff --git a/src/gpu/GridGenerator/geometries/Vertex/Vertex.h b/src/gpu/GridGenerator/geometries/Vertex/Vertex.h
index f854801a5..23b47311a 100644
--- a/src/gpu/GridGenerator/geometries/Vertex/Vertex.h
+++ b/src/gpu/GridGenerator/geometries/Vertex/Vertex.h
@@ -10,7 +10,7 @@
 
 class VertexMemento;
 
-struct VF_PUBLIC Vertex 
+struct VIRTUALFLUIDS_GPU_EXPORT Vertex
 {
 public:
     real x, y, z;
diff --git a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
index 0bf95520e..6d004909e 100644
--- a/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
+++ b/src/gpu/GridGenerator/geometries/VerticalCylinder/VerticalCylinder.h
@@ -11,7 +11,7 @@
 
 #include "geometries/Object.h"
 
-class VF_PUBLIC VerticalCylinder : public Object
+class VIRTUALFLUIDS_GPU_EXPORT VerticalCylinder : public Object
 {
 public:
     HOSTDEVICE VerticalCylinder(const double& centerX, const double& centerY, const double& centerZ, const double& radius, const double& height);
diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
index 0c0a01476..6ddc6b0e1 100644
--- a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
+++ b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.cpp
@@ -10,7 +10,7 @@ bool BoundaryCondition::isSide( SideType side ) const
     return this->side->whoAmI() == side;
 }
 
-VF_PUBLIC void VelocityBoundaryCondition::setVelocityProfile(SPtr<Grid> grid, std::function<void(real, real, real, real&, real&, real&)> velocityProfile)
+VIRTUALFLUIDS_GPU_EXPORT void VelocityBoundaryCondition::setVelocityProfile(SPtr<Grid> grid, std::function<void(real, real, real, real&, real&, real&)> velocityProfile)
 {
     for( uint index = 0; index < this->indices.size(); index++ ){
 
diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
index a45ecf2f6..9765a24d2 100644
--- a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
+++ b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
@@ -96,7 +96,7 @@ public:
     real getVy(uint index) { return this->vyList[index]; }
     real getVz(uint index) { return this->vzList[index]; }
     
-    VF_PUBLIC void setVelocityProfile( SPtr<Grid> grid, std::function<void(real,real,real,real&,real&,real&)> velocityProfile );
+    VIRTUALFLUIDS_GPU_EXPORT void setVelocityProfile( SPtr<Grid> grid, std::function<void(real,real,real,real&,real&,real&)> velocityProfile );
 };
 
 //////////////////////////////////////////////////////////////////////////
@@ -129,7 +129,7 @@ public:
         }
     }
 
-    VF_PUBLIC void setTangentialVelocityForPatch( SPtr<Grid> grid, uint patch, 
+    VIRTUALFLUIDS_GPU_EXPORT void setTangentialVelocityForPatch( SPtr<Grid> grid, uint patch,
                                                   real p1x, real p1y, real p1z, 
                                                   real p2x, real p2y, real p2z, 
                                                   real v, real r );
diff --git a/src/gpu/GridGenerator/grid/Field.h b/src/gpu/GridGenerator/grid/Field.h
index 1757d7e44..620e6780f 100644
--- a/src/gpu/GridGenerator/grid/Field.h
+++ b/src/gpu/GridGenerator/grid/Field.h
@@ -6,7 +6,7 @@
 struct Vertex;
 class GridStrategy;
 
-class VF_PUBLIC Field : public enableSharedFromThis<Field>
+class VIRTUALFLUIDS_GPU_EXPORT Field : public enableSharedFromThis<Field>
 {
 public:
     CUDA_HOST Field(SPtr<GridStrategy> gridStrategy, uint size);
diff --git a/src/gpu/GridGenerator/grid/Grid.h b/src/gpu/GridGenerator/grid/Grid.h
index 8582d1606..21fdeaa65 100644
--- a/src/gpu/GridGenerator/grid/Grid.h
+++ b/src/gpu/GridGenerator/grid/Grid.h
@@ -17,7 +17,7 @@ class GridInterface;
 class Object;
 class BoundingBox;
 
-class VF_PUBLIC Grid
+class VIRTUALFLUIDS_GPU_EXPORT Grid
 {
 public:
     HOSTDEVICE virtual ~Grid() {}
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
index b7cb1094e..7550cb582 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
@@ -39,9 +39,9 @@ public:
         CPU, GPU
     };
 
-    virtual VF_PUBLIC ~GridBuilder() {}
+    virtual VIRTUALFLUIDS_GPU_EXPORT ~GridBuilder() {}
     virtual void getGridInformations(std::vector<int>& gridX, std::vector<int>& gridY, std::vector<int>& gridZ, std::vector<int>& distX, std::vector<int>& distY, std::vector<int>& distZ) = 0;
-    virtual VF_PUBLIC uint getNumberOfGridLevels() const = 0;
+    virtual VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfGridLevels() const = 0;
 
 
     virtual void writeArrows(std::string fileName) const = 0;
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
index 3ffc8625a..dfb06790d 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
@@ -126,18 +126,18 @@ void LevelGridBuilder::setNoSlipBoundaryCondition(SideType sideType)
     }
 }
 
-VF_PUBLIC void LevelGridBuilder::setEnableFixRefinementIntoTheWall(bool enableFixRefinementIntoTheWall)
+VIRTUALFLUIDS_GPU_EXPORT void LevelGridBuilder::setEnableFixRefinementIntoTheWall(bool enableFixRefinementIntoTheWall)
 {
     for( uint level = 0; level < this->grids.size(); level++ )
         grids[level]->setEnableFixRefinementIntoTheWall( enableFixRefinementIntoTheWall );
 }
 
-VF_PUBLIC void LevelGridBuilder::setCommunicationProcess(int direction, uint process)
+VIRTUALFLUIDS_GPU_EXPORT void LevelGridBuilder::setCommunicationProcess(int direction, uint process)
 {
     this->communicationProcesses[direction] = process;
 }
 
-VF_PUBLIC uint LevelGridBuilder::getCommunicationProcess(int direction)
+VIRTUALFLUIDS_GPU_EXPORT uint LevelGridBuilder::getCommunicationProcess(int direction)
 {
     return this->communicationProcesses[direction];
 }
@@ -228,17 +228,17 @@ void LevelGridBuilder::getOffsetCF(real * xOffCF, real * yOffCF, real * zOffCF,
     }
 }
 
-VF_PUBLIC uint LevelGridBuilder::getNumberOfSendIndices(int direction, uint level)
+VIRTUALFLUIDS_GPU_EXPORT uint LevelGridBuilder::getNumberOfSendIndices(int direction, uint level)
 {
     return this->grids[level]->getNumberOfSendNodes(direction);
 }
 
-VF_PUBLIC uint LevelGridBuilder::getNumberOfReceiveIndices(int direction, uint level)
+VIRTUALFLUIDS_GPU_EXPORT uint LevelGridBuilder::getNumberOfReceiveIndices(int direction, uint level)
 {
     return this->grids[level]->getNumberOfReceiveNodes(direction);
 }
 
-VF_PUBLIC void LevelGridBuilder::getSendIndices(int * sendIndices, int direction, int level)
+VIRTUALFLUIDS_GPU_EXPORT void LevelGridBuilder::getSendIndices(int * sendIndices, int direction, int level)
 {
     SPtr<Grid> grid = this->grids[level];
     for( uint i = 0; i < getNumberOfSendIndices(direction, level); i++ )
@@ -247,7 +247,7 @@ VF_PUBLIC void LevelGridBuilder::getSendIndices(int * sendIndices, int direction
     }
 }
 
-VF_PUBLIC void LevelGridBuilder::getReceiveIndices(int * receiveIndices, int direction, int level)
+VIRTUALFLUIDS_GPU_EXPORT void LevelGridBuilder::getReceiveIndices(int * receiveIndices, int direction, int level)
 {
     SPtr<Grid> grid = this->grids[level];
     for( uint i = 0; i < getNumberOfReceiveIndices(direction, level); i++ )
@@ -469,7 +469,7 @@ void LevelGridBuilder::writeArrows(std::string fileName) const
     QLineWriter::writeArrows(fileName, boundaryConditions[getNumberOfGridLevels() - 1]->geometryBoundaryCondition, grids[getNumberOfGridLevels() - 1]);
 }
 
-VF_PUBLIC SPtr<BoundaryCondition> LevelGridBuilder::getBoundaryCondition(SideType side, uint level) const
+VIRTUALFLUIDS_GPU_EXPORT SPtr<BoundaryCondition> LevelGridBuilder::getBoundaryCondition(SideType side, uint level) const
 {
     for( auto bc : this->boundaryConditions[level]->pressureBoundaryConditions )
         if( bc->isSide(side) )
@@ -487,7 +487,7 @@ VF_PUBLIC SPtr<BoundaryCondition> LevelGridBuilder::getBoundaryCondition(SideTyp
     return nullptr;
 }
 
-VF_PUBLIC SPtr<GeometryBoundaryCondition> LevelGridBuilder::getGeometryBoundaryCondition(uint level) const
+VIRTUALFLUIDS_GPU_EXPORT SPtr<GeometryBoundaryCondition> LevelGridBuilder::getGeometryBoundaryCondition(uint level) const
 {
     return this->boundaryConditions[level]->geometryBoundaryCondition;
 }
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
index 5787b6efa..51a8830a6 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
@@ -32,57 +32,57 @@ enum class SideType;
 class LevelGridBuilder : public GridBuilder
 {
 protected:
-    VF_PUBLIC LevelGridBuilder(Device device, const std::string& d3qxx);
+    VIRTUALFLUIDS_GPU_EXPORT LevelGridBuilder(Device device, const std::string& d3qxx);
 
 public:
-    VF_PUBLIC static std::shared_ptr<LevelGridBuilder> makeShared(Device device, const std::string& d3qxx);
+    VIRTUALFLUIDS_GPU_EXPORT static std::shared_ptr<LevelGridBuilder> makeShared(Device device, const std::string& d3qxx);
 
-    VF_PUBLIC SPtr<Grid> getGrid(uint level) override;
+    VIRTUALFLUIDS_GPU_EXPORT SPtr<Grid> getGrid(uint level) override;
 
-    VF_PUBLIC void copyDataFromGpu();
-    VF_PUBLIC virtual ~LevelGridBuilder();
+    VIRTUALFLUIDS_GPU_EXPORT void copyDataFromGpu();
+    VIRTUALFLUIDS_GPU_EXPORT virtual ~LevelGridBuilder();
 
-    VF_PUBLIC void setVelocityBoundaryCondition(SideType sideType, real vx, real vy, real vz);
-    VF_PUBLIC void setPressureBoundaryCondition(SideType sideType, real rho);
-    VF_PUBLIC void setPeriodicBoundaryCondition(bool periodic_X, bool periodic_Y, bool periodic_Z);
-    VF_PUBLIC void setNoSlipBoundaryCondition(SideType sideType);
+    VIRTUALFLUIDS_GPU_EXPORT void setVelocityBoundaryCondition(SideType sideType, real vx, real vy, real vz);
+    VIRTUALFLUIDS_GPU_EXPORT void setPressureBoundaryCondition(SideType sideType, real rho);
+    VIRTUALFLUIDS_GPU_EXPORT void setPeriodicBoundaryCondition(bool periodic_X, bool periodic_Y, bool periodic_Z);
+    VIRTUALFLUIDS_GPU_EXPORT void setNoSlipBoundaryCondition(SideType sideType);
 
-    VF_PUBLIC void setEnableFixRefinementIntoTheWall( bool enableFixRefinementIntoTheWall );
+    VIRTUALFLUIDS_GPU_EXPORT void setEnableFixRefinementIntoTheWall( bool enableFixRefinementIntoTheWall );
 
-    VF_PUBLIC void setCommunicationProcess(int direction, uint process);
+    VIRTUALFLUIDS_GPU_EXPORT void setCommunicationProcess(int direction, uint process);
 
-    VF_PUBLIC uint getCommunicationProcess(int direction) override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getCommunicationProcess(int direction) override;
 
-    VF_PUBLIC virtual std::shared_ptr<Grid> getGrid(int level, int box);
+    VIRTUALFLUIDS_GPU_EXPORT virtual std::shared_ptr<Grid> getGrid(int level, int box);
 
 
-    VF_PUBLIC virtual unsigned int getNumberOfNodes(unsigned int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual unsigned int getNumberOfNodes(unsigned int level) const;
 
 
-    VF_PUBLIC virtual void getNodeValues(real *xCoords, real *yCoords, real *zCoords, 
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getNodeValues(real *xCoords, real *yCoords, real *zCoords,
                                          uint *neighborX, uint *neighborY, uint *neighborZ, uint *neighborNegative, 
                                          uint *geo, const int level) const override;
-    VF_PUBLIC virtual void getDimensions(int &nx, int &ny, int &nz, const int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getDimensions(int &nx, int &ny, int &nz, const int level) const;
 
 
-    VF_PUBLIC uint getVelocitySize(int level) const;
-    VF_PUBLIC virtual void getVelocityValues(real* vx, real* vy, real* vz, int* indices, int level) const;
-    VF_PUBLIC virtual void getVelocityQs(real* qs[27], int level) const;
-    VF_PUBLIC uint getPressureSize(int level) const override;
-    VF_PUBLIC void getPressureValues(real* rho, int* indices, int* neighborIndices, int level) const override;
-    VF_PUBLIC virtual void getPressureQs(real* qs[27], int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT uint getVelocitySize(int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getVelocityValues(real* vx, real* vy, real* vz, int* indices, int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getVelocityQs(real* qs[27], int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT uint getPressureSize(int level) const override;
+    VIRTUALFLUIDS_GPU_EXPORT void getPressureValues(real* rho, int* indices, int* neighborIndices, int level) const override;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getPressureQs(real* qs[27], int level) const;
 
-    VF_PUBLIC virtual void getGeometryQs(real* qs[27], int level) const;
-    VF_PUBLIC virtual uint getGeometrySize(int level) const;
-    VF_PUBLIC virtual void getGeometryIndices(int* indices, int level) const;
-    VF_PUBLIC virtual bool hasGeometryValues() const;
-    VF_PUBLIC virtual void getGeometryValues(real* vx, real* vy, real* vz, int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getGeometryQs(real* qs[27], int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual uint getGeometrySize(int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getGeometryIndices(int* indices, int level) const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual bool hasGeometryValues() const;
+    VIRTUALFLUIDS_GPU_EXPORT virtual void getGeometryValues(real* vx, real* vy, real* vz, int level) const;
 
 
-    VF_PUBLIC void writeArrows(std::string fileName) const;
+    VIRTUALFLUIDS_GPU_EXPORT void writeArrows(std::string fileName) const;
 
-    VF_PUBLIC SPtr<BoundaryCondition> getBoundaryCondition( SideType side, uint level ) const override;
-    VF_PUBLIC SPtr<GeometryBoundaryCondition> getGeometryBoundaryCondition(uint level) const override;
+    VIRTUALFLUIDS_GPU_EXPORT SPtr<BoundaryCondition> getBoundaryCondition( SideType side, uint level ) const override;
+    VIRTUALFLUIDS_GPU_EXPORT SPtr<GeometryBoundaryCondition> getGeometryBoundaryCondition(uint level) const override;
 
 protected:
     
@@ -126,23 +126,23 @@ private:
     std::string d3qxx;
 
 public:
-    VF_PUBLIC void getGridInformations(std::vector<int>& gridX, std::vector<int>& gridY,
+    VIRTUALFLUIDS_GPU_EXPORT void getGridInformations(std::vector<int>& gridX, std::vector<int>& gridY,
                                        std::vector<int>& gridZ, std::vector<int>& distX, std::vector<int>& distY,
                                        std::vector<int>& distZ) override;
-    VF_PUBLIC uint getNumberOfGridLevels() const override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfGridLevels() const override;
 
-    VF_PUBLIC uint getNumberOfNodesCF(int level) override;
-    VF_PUBLIC uint getNumberOfNodesFC(int level) override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfNodesCF(int level) override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfNodesFC(int level) override;
 
-    VF_PUBLIC void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf, int level) const override;
+    VIRTUALFLUIDS_GPU_EXPORT void getGridInterfaceIndices(uint* iCellCfc, uint* iCellCff, uint* iCellFcc, uint* iCellFcf, int level) const override;
 
-    VF_PUBLIC void getOffsetFC(real* xOffCf, real* yOffCf, real* zOffCf, int level) override;
-    VF_PUBLIC void getOffsetCF(real* xOffFc, real* yOffFc, real* zOffFc, int level) override;
+    VIRTUALFLUIDS_GPU_EXPORT void getOffsetFC(real* xOffCf, real* yOffCf, real* zOffCf, int level) override;
+    VIRTUALFLUIDS_GPU_EXPORT void getOffsetCF(real* xOffFc, real* yOffFc, real* zOffFc, int level) override;
 
-    VF_PUBLIC uint getNumberOfSendIndices( int direction, uint level ) override;
-    VF_PUBLIC uint getNumberOfReceiveIndices( int direction, uint level ) override;
-    VF_PUBLIC void getSendIndices( int* sendIndices, int direction, int level ) override;
-    VF_PUBLIC void getReceiveIndices( int* sendIndices, int direction, int level ) override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfSendIndices( int direction, uint level ) override;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfReceiveIndices( int direction, uint level ) override;
+    VIRTUALFLUIDS_GPU_EXPORT void getSendIndices( int* sendIndices, int direction, int level ) override;
+    VIRTUALFLUIDS_GPU_EXPORT void getReceiveIndices( int* sendIndices, int direction, int level ) override;
 
 };
 
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
index 52726d532..1dda75c8c 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
@@ -571,7 +571,7 @@ void MultipleGridBuilder::buildGrids( LbmOrGks lbmOrGks, bool enableThinWalls )
     //////////////////////////////////////////////////////////////////////////
 }
 
-VF_PUBLIC void MultipleGridBuilder::setNumberOfLayers(uint numberOfLayersFine, uint numberOfLayersBetweenLevels)
+VIRTUALFLUIDS_GPU_EXPORT void MultipleGridBuilder::setNumberOfLayers(uint numberOfLayersFine, uint numberOfLayersBetweenLevels)
 {
     this->numberOfLayersFine = numberOfLayersFine;
     this->numberOfLayersBetweenLevels = numberOfLayersBetweenLevels;
@@ -618,7 +618,7 @@ void MultipleGridBuilder::writeGridsToVtk(const std::string& path) const
     }
 }
 
-VF_PUBLIC void MultipleGridBuilder::setSubDomainBox(SPtr<BoundingBox> subDomainBox)
+VIRTUALFLUIDS_GPU_EXPORT void MultipleGridBuilder::setSubDomainBox(SPtr<BoundingBox> subDomainBox)
 {
     this->subDomainBox = subDomainBox;
 }
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
index 96bb298f0..a22c87799 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
@@ -17,37 +17,37 @@ class BoundingBox;
 class MultipleGridBuilder : public LevelGridBuilder
 {
 private:
-    VF_PUBLIC MultipleGridBuilder(SPtr<GridFactory> gridFactory, Device device = Device::CPU, const std::string &d3qxx = "D3Q27");
+    VIRTUALFLUIDS_GPU_EXPORT MultipleGridBuilder(SPtr<GridFactory> gridFactory, Device device = Device::CPU, const std::string &d3qxx = "D3Q27");
 
 public:
-    VF_PUBLIC static SPtr<MultipleGridBuilder> makeShared(SPtr<GridFactory> gridFactory);
+    VIRTUALFLUIDS_GPU_EXPORT static SPtr<MultipleGridBuilder> makeShared(SPtr<GridFactory> gridFactory);
 
-    VF_PUBLIC void addCoarseGrid(real startX, real startY, real startZ, real endX, real endY, real endZ, real delta);
-    VF_PUBLIC void addGrid(Object* gridShape);
-    VF_PUBLIC void addGrid(Object* gridShape, uint levelFine);
+    VIRTUALFLUIDS_GPU_EXPORT void addCoarseGrid(real startX, real startY, real startZ, real endX, real endY, real endZ, real delta);
+    VIRTUALFLUIDS_GPU_EXPORT void addGrid(Object* gridShape);
+    VIRTUALFLUIDS_GPU_EXPORT void addGrid(Object* gridShape, uint levelFine);
 
-    VF_PUBLIC void addGeometry(Object* gridShape);
-    VF_PUBLIC void addGeometry(Object* solidObject, uint level);
+    VIRTUALFLUIDS_GPU_EXPORT void addGeometry(Object* gridShape);
+    VIRTUALFLUIDS_GPU_EXPORT void addGeometry(Object* solidObject, uint level);
 
-    VF_PUBLIC uint getNumberOfLevels() const;
-    VF_PUBLIC real getDelta(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT uint getNumberOfLevels() const;
+    VIRTUALFLUIDS_GPU_EXPORT real getDelta(uint level) const;
 
-    VF_PUBLIC real getStartX(uint level) const;
-    VF_PUBLIC real getStartY(uint level) const;
-    VF_PUBLIC real getStartZ(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getStartX(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getStartY(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getStartZ(uint level) const;
 
-    VF_PUBLIC real getEndX(uint level) const;
-    VF_PUBLIC real getEndY(uint level) const;
-    VF_PUBLIC real getEndZ(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getEndX(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getEndY(uint level) const;
+    VIRTUALFLUIDS_GPU_EXPORT real getEndZ(uint level) const;
 
-    VF_PUBLIC std::vector<SPtr<Grid> > getGrids() const;
-    VF_PUBLIC void buildGrids(LbmOrGks lbmOrGks, bool enableThinWalls = false);
+    VIRTUALFLUIDS_GPU_EXPORT std::vector<SPtr<Grid> > getGrids() const;
+    VIRTUALFLUIDS_GPU_EXPORT void buildGrids(LbmOrGks lbmOrGks, bool enableThinWalls = false);
 
-    VF_PUBLIC void setNumberOfLayers( uint numberOfLayersFine, uint numberOfLayersBetweenLevels );
+    VIRTUALFLUIDS_GPU_EXPORT void setNumberOfLayers( uint numberOfLayersFine, uint numberOfLayersBetweenLevels );
 
-    VF_PUBLIC void writeGridsToVtk(const std::string& path) const;
+    VIRTUALFLUIDS_GPU_EXPORT void writeGridsToVtk(const std::string& path) const;
 
-    VF_PUBLIC void setSubDomainBox(SPtr<BoundingBox> subDomainBox);
+    VIRTUALFLUIDS_GPU_EXPORT void setSubDomainBox(SPtr<BoundingBox> subDomainBox);
 
 private:
     void addGridToList(SPtr<Grid> grid);
@@ -83,7 +83,7 @@ private:
 
 public:
 
-    VF_PUBLIC void findCommunicationIndices( int direction, LbmOrGks lbmOrGks );
+    VIRTUALFLUIDS_GPU_EXPORT void findCommunicationIndices( int direction, LbmOrGks lbmOrGks );
 };
 
 #endif
diff --git a/src/gpu/GridGenerator/grid/GridFactory.h b/src/gpu/GridGenerator/grid/GridFactory.h
index 13e7d72f4..57f3e4849 100644
--- a/src/gpu/GridGenerator/grid/GridFactory.h
+++ b/src/gpu/GridGenerator/grid/GridFactory.h
@@ -22,7 +22,7 @@ enum class TriangularMeshDiscretizationMethod
     RAYCASTING, POINT_IN_OBJECT, POINT_UNDER_TRIANGLE
 };
 
-class VF_PUBLIC GridFactory
+class VIRTUALFLUIDS_GPU_EXPORT GridFactory
 {
 public:
     static SPtr<GridFactory> make()
diff --git a/src/gpu/GridGenerator/grid/GridImp.h b/src/gpu/GridGenerator/grid/GridImp.h
index 478e8c533..d58b1b70b 100644
--- a/src/gpu/GridGenerator/grid/GridImp.h
+++ b/src/gpu/GridGenerator/grid/GridImp.h
@@ -23,7 +23,7 @@ class TriangularMeshDiscretizationStrategy;
 
 extern CONSTANT int DIRECTIONS[DIR_END_MAX][DIMENSION];
 
-class VF_PUBLIC GridImp : public enableSharedFromThis<GridImp>, public Grid
+class VIRTUALFLUIDS_GPU_EXPORT GridImp : public enableSharedFromThis<GridImp>, public Grid
 {
 private:
     CUDA_HOST GridImp();
diff --git a/src/gpu/GridGenerator/grid/GridInterface.cu b/src/gpu/GridGenerator/grid/GridInterface.cu
index 401773143..e05b017c8 100644
--- a/src/gpu/GridGenerator/grid/GridInterface.cu
+++ b/src/gpu/GridGenerator/grid/GridInterface.cu
@@ -254,7 +254,7 @@ void GridInterface::findForGridInterfaceSparseIndexFC(GridImp* coarseGrid, GridI
     findSparseIndex(fc.fine, fineGrid, index);
 }
 
-CUDA_HOST void VF_PUBLIC GridInterface::repairGridInterfaceOnMultiGPU(SPtr<GridImp> coarseGrid, SPtr<GridImp> fineGrid)
+CUDA_HOST void VIRTUALFLUIDS_GPU_EXPORT GridInterface::repairGridInterfaceOnMultiGPU(SPtr<GridImp> coarseGrid, SPtr<GridImp> fineGrid)
 {
     {
         std::vector<uint> tmpCFC;
diff --git a/src/gpu/GridGenerator/grid/GridInterface.h b/src/gpu/GridGenerator/grid/GridInterface.h
index b979b60d6..0fa224c31 100644
--- a/src/gpu/GridGenerator/grid/GridInterface.h
+++ b/src/gpu/GridGenerator/grid/GridInterface.h
@@ -8,26 +8,26 @@ class GridImp;
 class GridInterface
 {
 public:
-    HOSTDEVICE VF_PUBLIC GridInterface();
-    HOSTDEVICE VF_PUBLIC ~GridInterface();
+    HOSTDEVICE VIRTUALFLUIDS_GPU_EXPORT GridInterface();
+    HOSTDEVICE VIRTUALFLUIDS_GPU_EXPORT ~GridInterface();
 
-    HOSTDEVICE void VF_PUBLIC findInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
-    HOSTDEVICE void VF_PUBLIC findBoundaryGridInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findBoundaryGridInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
 
 
-	HOSTDEVICE void VF_PUBLIC findInterfaceCF_GKS(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+	HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findInterfaceCF_GKS(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
 
-	HOSTDEVICE void VF_PUBLIC findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
-    HOSTDEVICE void VF_PUBLIC findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+	HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
     
-    HOSTDEVICE void VF_PUBLIC findInvalidBoundaryNodes(const uint& indexOnCoarseGrid, GridImp* coarseGrid);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findInvalidBoundaryNodes(const uint& indexOnCoarseGrid, GridImp* coarseGrid);
 
-    HOSTDEVICE void VF_PUBLIC findForGridInterfaceSparseIndexCF(GridImp* coarseGrid, GridImp* fineGrid, uint index);
-    HOSTDEVICE void VF_PUBLIC findForGridInterfaceSparseIndexFC(GridImp* coarseGrid, GridImp* fineGrid, uint index);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findForGridInterfaceSparseIndexCF(GridImp* coarseGrid, GridImp* fineGrid, uint index);
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT findForGridInterfaceSparseIndexFC(GridImp* coarseGrid, GridImp* fineGrid, uint index);
 
-    CUDA_HOST void VF_PUBLIC repairGridInterfaceOnMultiGPU(SPtr<GridImp> coarseGrid, SPtr<GridImp> fineGrid);
+    CUDA_HOST void VIRTUALFLUIDS_GPU_EXPORT repairGridInterfaceOnMultiGPU(SPtr<GridImp> coarseGrid, SPtr<GridImp> fineGrid);
 
-    HOSTDEVICE void VF_PUBLIC print() const;
+    HOSTDEVICE void VIRTUALFLUIDS_GPU_EXPORT print() const;
 
     struct Interface
     {
diff --git a/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h b/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
index cabbc67e3..b5b91af92 100644
--- a/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
+++ b/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
@@ -8,7 +8,7 @@
 class GridImp;
 class TriangularMesh;
 
-class VF_PUBLIC GridCpuStrategy : public GridStrategy
+class VIRTUALFLUIDS_GPU_EXPORT GridCpuStrategy : public GridStrategy
 {
 public:
     virtual ~GridCpuStrategy() {};
diff --git a/src/gpu/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h b/src/gpu/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
index a0031eafe..8ba30824a 100644
--- a/src/gpu/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
+++ b/src/gpu/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
@@ -8,7 +8,7 @@
 class BoundingBox;
 class TriangularMesh;
 
-class VF_PUBLIC GridGpuStrategy : public GridStrategy
+class VIRTUALFLUIDS_GPU_EXPORT GridGpuStrategy : public GridStrategy
 {
 public:
     virtual ~GridGpuStrategy() {};
diff --git a/src/gpu/GridGenerator/grid/GridStrategy/GridStrategy.h b/src/gpu/GridGenerator/grid/GridStrategy/GridStrategy.h
index bc861f8c9..44152ffed 100644
--- a/src/gpu/GridGenerator/grid/GridStrategy/GridStrategy.h
+++ b/src/gpu/GridGenerator/grid/GridStrategy/GridStrategy.h
@@ -11,7 +11,7 @@ struct Vertex;
 class TriangularMesh;
 class GridImp;
 
-class VF_PUBLIC GridStrategy
+class VIRTUALFLUIDS_GPU_EXPORT GridStrategy
 {
 public:
     virtual ~GridStrategy() {}
diff --git a/src/gpu/GridGenerator/grid/distributions/Distribution.h b/src/gpu/GridGenerator/grid/distributions/Distribution.h
index f7aadd65f..5ba90548f 100644
--- a/src/gpu/GridGenerator/grid/distributions/Distribution.h
+++ b/src/gpu/GridGenerator/grid/distributions/Distribution.h
@@ -60,7 +60,7 @@ struct Distribution
 
 class Grid;
 
-class VF_PUBLIC DistributionHelper
+class VIRTUALFLUIDS_GPU_EXPORT DistributionHelper
 {
 public:
     static Distribution getDistribution7();
diff --git a/src/gpu/GridGenerator/grid/partition/Partition.h b/src/gpu/GridGenerator/grid/partition/Partition.h
index 0c0ebc870..4b9c109d5 100644
--- a/src/gpu/GridGenerator/grid/partition/Partition.h
+++ b/src/gpu/GridGenerator/grid/partition/Partition.h
@@ -14,7 +14,7 @@
 //class Grid;
 //class Transformator;
 //
-//class VF_PUBLIC Partition
+//class VIRTUALFLUIDS_GPU_EXPORT Partition
 //{
 //public:
 //    static void partitionGridMesh(SPtr<Grid> grid);
diff --git a/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.h b/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.h
index c55a111c5..5a4ba5466 100644
--- a/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.h
+++ b/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.h
@@ -9,7 +9,7 @@ enum class WRITING_FORMAT { BINARY, ASCII };
 
 class Grid;
 
-class VF_PUBLIC GridVTKWriter
+class VIRTUALFLUIDS_GPU_EXPORT GridVTKWriter
 {
 public:
     static void writeSparseGridToVTK(SPtr<Grid> grid, const std::string& name, WRITING_FORMAT format = WRITING_FORMAT::ASCII);
diff --git a/src/gpu/GridGenerator/io/STLReaderWriter/STLReader.h b/src/gpu/GridGenerator/io/STLReaderWriter/STLReader.h
index ce8411507..d0fa2d3f9 100644
--- a/src/gpu/GridGenerator/io/STLReaderWriter/STLReader.h
+++ b/src/gpu/GridGenerator/io/STLReaderWriter/STLReader.h
@@ -11,7 +11,7 @@ struct Triangle;
 struct Vertex;
 class BoundingBox;
 
-class VF_PUBLIC STLReader
+class VIRTUALFLUIDS_GPU_EXPORT STLReader
 {
 public:
 
diff --git a/src/gpu/GridGenerator/io/STLReaderWriter/STLWriter.h b/src/gpu/GridGenerator/io/STLReaderWriter/STLWriter.h
index 174a8e432..bd5aee268 100644
--- a/src/gpu/GridGenerator/io/STLReaderWriter/STLWriter.h
+++ b/src/gpu/GridGenerator/io/STLReaderWriter/STLWriter.h
@@ -11,7 +11,7 @@
 class Transformator;
 struct Triangle;
 
-class VF_PUBLIC STLWriter
+class VIRTUALFLUIDS_GPU_EXPORT STLWriter
 {
 public:
     static void writeSTL(std::vector<Triangle> &vec, const std::string &name, bool writeBinary = false);
diff --git a/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileNames.h b/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileNames.h
index b80e999da..b794a2d49 100644
--- a/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileNames.h
+++ b/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileNames.h
@@ -5,7 +5,7 @@
 
 #include "global.h"
 
-struct VF_PUBLIC simulationFileNames
+struct VIRTUALFLUIDS_GPU_EXPORT simulationFileNames
 {
 	static const std::string coordX;
 	static const std::string coordY;
diff --git a/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h b/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
index b4edfba92..8e50697e2 100644
--- a/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
+++ b/src/gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
@@ -25,7 +25,7 @@ enum class FILEFORMAT
 class SimulationFileWriter : private NonCreatable
 {
 public:
-    VF_PUBLIC static void write(std::string folder, SPtr<GridBuilder> builder, FILEFORMAT format);
+    VIRTUALFLUIDS_GPU_EXPORT static void write(std::string folder, SPtr<GridBuilder> builder, FILEFORMAT format);
 
 private:
     static void write(SPtr<GridBuilder> builder, FILEFORMAT format);
diff --git a/src/gpu/GridGenerator/io/VTKWriterWrapper/PolyDataWriterWrapper.h b/src/gpu/GridGenerator/io/VTKWriterWrapper/PolyDataWriterWrapper.h
index fbaaf5b34..19a70bb42 100644
--- a/src/gpu/GridGenerator/io/VTKWriterWrapper/PolyDataWriterWrapper.h
+++ b/src/gpu/GridGenerator/io/VTKWriterWrapper/PolyDataWriterWrapper.h
@@ -11,11 +11,11 @@
 //class PolyDataWriterWrapper
 //{
 //public:
-//	VF_PUBLIC PolyDataWriterWrapper();
-//	VF_PUBLIC ~PolyDataWriterWrapper();
+//	VIRTUALFLUIDS_GPU_EXPORT PolyDataWriterWrapper();
+//	VIRTUALFLUIDS_GPU_EXPORT ~PolyDataWriterWrapper();
 //
-//	VF_PUBLIC virtual void addVectorArrow(std::shared_ptr<const Arrow> arrow);
-//	VF_PUBLIC virtual void writePolyDataToFile(const std::string &filename) const;
+//	VIRTUALFLUIDS_GPU_EXPORT virtual void addVectorArrow(std::shared_ptr<const Arrow> arrow);
+//	VIRTUALFLUIDS_GPU_EXPORT virtual void writePolyDataToFile(const std::string &filename) const;
 //
 //private:
 //    std::shared_ptr<PolyDataWriter> writer;
diff --git a/src/gpu/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.h b/src/gpu/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.h
index 70b4a0655..a02a04f95 100644
--- a/src/gpu/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.h
+++ b/src/gpu/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.h
@@ -13,7 +13,7 @@
 //struct Vertex;
 //class Grid;
 //
-//class VF_PUBLIC UnstructuredGridWrapper
+//class VIRTUALFLUIDS_GPU_EXPORT UnstructuredGridWrapper
 //{
 //public:
 //    UnstructuredGridWrapper();
diff --git a/src/gpu/GridGenerator/utilities/cuda/LaunchParameter.cuh b/src/gpu/GridGenerator/utilities/cuda/LaunchParameter.cuh
index 4bfc25849..e50318ed7 100644
--- a/src/gpu/GridGenerator/utilities/cuda/LaunchParameter.cuh
+++ b/src/gpu/GridGenerator/utilities/cuda/LaunchParameter.cuh
@@ -11,10 +11,10 @@
 class LaunchParameter
 {
 public:
-	CUDA_HOST VF_PUBLIC LaunchParameter();
+	CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT LaunchParameter();
 
-	CUDA_HOST VF_PUBLIC static LaunchParameter make_2D1D_launchParameter(int size, int threadDim);
-	CUDA_HOST VF_PUBLIC static LaunchParameter make_1D1D_launchParameter(int size, int threadDim);
+	CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT static LaunchParameter make_2D1D_launchParameter(int size, int threadDim);
+	CUDA_HOST VIRTUALFLUIDS_GPU_EXPORT static LaunchParameter make_1D1D_launchParameter(int size, int threadDim);
 
 	DEVICE static int getGlobalIdx_2D_1D();
 	DEVICE static int getGlobalIdx_1D_1D();
diff --git a/src/gpu/GridGenerator/utilities/math/Math.h b/src/gpu/GridGenerator/utilities/math/Math.h
index d4b9823b8..8bf90f83a 100644
--- a/src/gpu/GridGenerator/utilities/math/Math.h
+++ b/src/gpu/GridGenerator/utilities/math/Math.h
@@ -11,7 +11,7 @@
 
 namespace vf 
 {
-    class VF_PUBLIC Math
+    class VIRTUALFLUIDS_GPU_EXPORT Math
     {
     public:
         HOSTDEVICE static bool equal(const real& val1, const real& val2, real maxRelDiff = EPSILON);
diff --git a/src/gpu/GridGenerator/utilities/transformator/ArrowTransformator.h b/src/gpu/GridGenerator/utilities/transformator/ArrowTransformator.h
index deaa4403e..8048fb936 100644
--- a/src/gpu/GridGenerator/utilities/transformator/ArrowTransformator.h
+++ b/src/gpu/GridGenerator/utilities/transformator/ArrowTransformator.h
@@ -10,7 +10,7 @@ class Arrow;
 class ArrowTransformator
 {
 public:
-    static VF_PUBLIC std::shared_ptr<ArrowTransformator> makeTransformator(real delta, real dx, real dy, real dz);
+    static VIRTUALFLUIDS_GPU_EXPORT std::shared_ptr<ArrowTransformator> makeTransformator(real delta, real dx, real dy, real dz);
 	virtual ~ArrowTransformator() {}
 
 protected:
diff --git a/src/gpu/GridGenerator/utilities/transformator/Transformator.h b/src/gpu/GridGenerator/utilities/transformator/Transformator.h
index 3bf5b5b45..24d57e91a 100644
--- a/src/gpu/GridGenerator/utilities/transformator/Transformator.h
+++ b/src/gpu/GridGenerator/utilities/transformator/Transformator.h
@@ -14,7 +14,7 @@ struct Vertex;
 class Transformator
 {
 public:
-    static VF_PUBLIC std::shared_ptr<Transformator> makeTransformator(real delta, real dx, real dy, real dz);
+    static VIRTUALFLUIDS_GPU_EXPORT std::shared_ptr<Transformator> makeTransformator(real delta, real dx, real dy, real dz);
 	virtual ~Transformator() {}
 
 protected:
diff --git a/src/gpu/GridGenerator/utilities/transformator/TransformatorImp.h b/src/gpu/GridGenerator/utilities/transformator/TransformatorImp.h
index 64a52604b..ec5caefd8 100644
--- a/src/gpu/GridGenerator/utilities/transformator/TransformatorImp.h
+++ b/src/gpu/GridGenerator/utilities/transformator/TransformatorImp.h
@@ -27,25 +27,25 @@ class TransformatorImp
 	: public Transformator, public ArrowTransformator
 {
 public:
-	VF_PUBLIC TransformatorImp();
-	VF_PUBLIC TransformatorImp(const TransformatorImp& trafo);
-	VF_PUBLIC TransformatorImp(real delta, const Vertex& translater);
-	VF_PUBLIC TransformatorImp(real delta, real dx, real dy, real dz);
-	VF_PUBLIC virtual ~TransformatorImp();
+	VIRTUALFLUIDS_GPU_EXPORT TransformatorImp();
+	VIRTUALFLUIDS_GPU_EXPORT TransformatorImp(const TransformatorImp& trafo);
+	VIRTUALFLUIDS_GPU_EXPORT TransformatorImp(real delta, const Vertex& translater);
+	VIRTUALFLUIDS_GPU_EXPORT TransformatorImp(real delta, real dx, real dy, real dz);
+	VIRTUALFLUIDS_GPU_EXPORT virtual ~TransformatorImp();
 	
-	VF_PUBLIC void transformWorldToGrid(Triangle &value) const;
-	VF_PUBLIC void transformWorldToGrid(TriangularMesh &geom) const;
-	VF_PUBLIC void transformWorldToGrid(Vertex &value) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformWorldToGrid(Triangle &value) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformWorldToGrid(TriangularMesh &geom) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformWorldToGrid(Vertex &value) const;
 
-    VF_PUBLIC void transformGridToWorld(Triangle &t) const;
-	VF_PUBLIC void transformGridToWorld(Vertex &value) const;
+    VIRTUALFLUIDS_GPU_EXPORT void transformGridToWorld(Triangle &t) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformGridToWorld(Vertex &value) const;
 
-	VF_PUBLIC void transformGridToWorld(BoundingBox &box) const;
-	VF_PUBLIC void transformWorldToGrid(BoundingBox &box) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformGridToWorld(BoundingBox &box) const;
+	VIRTUALFLUIDS_GPU_EXPORT void transformWorldToGrid(BoundingBox &box) const;
 
-	VF_PUBLIC bool operator==(const TransformatorImp& trafo) const;
+	VIRTUALFLUIDS_GPU_EXPORT bool operator==(const TransformatorImp& trafo) const;
 
-	VF_PUBLIC virtual void transformGridToWorld(std::shared_ptr<Arrow> arrow) const override;
+	VIRTUALFLUIDS_GPU_EXPORT virtual void transformGridToWorld(std::shared_ptr<Arrow> arrow) const override;
 
 private:
 	real delta;
diff --git a/src/gpu/Traffic/GPU/TrafficTimestep.h b/src/gpu/Traffic/GPU/TrafficTimestep.h
index f06b9e4c0..a92cfd6e3 100644
--- a/src/gpu/Traffic/GPU/TrafficTimestep.h
+++ b/src/gpu/Traffic/GPU/TrafficTimestep.h
@@ -16,7 +16,7 @@ class Sink;
 class Junction;
 class Source;
 
-class VF_PUBLIC TrafficTimestep
+class VIRTUALFLUIDS_GPU_EXPORT TrafficTimestep
 {
 private:
 
diff --git a/src/gpu/Traffic/Junction/Junction.h b/src/gpu/Traffic/Junction/Junction.h
index 9f83a977b..620cf330b 100644
--- a/src/gpu/Traffic/Junction/Junction.h
+++ b/src/gpu/Traffic/Junction/Junction.h
@@ -8,7 +8,7 @@
 
 class TrafficMovement;
 
-class VF_PUBLIC Junction
+class VIRTUALFLUIDS_GPU_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 f9b4a452c..61e891f7a 100644
--- a/src/gpu/Traffic/Junction/JunctionData.h
+++ b/src/gpu/Traffic/Junction/JunctionData.h
@@ -7,7 +7,7 @@
 #include "Utilities/RandomHelper.h"
 
 
-struct VF_PUBLIC JunctionData
+struct VIRTUALFLUIDS_GPU_EXPORT JunctionData
 {
 public:
 	std::vector<uint> inCellIndices;
diff --git a/src/gpu/Traffic/Junction/JunctionRandom.h b/src/gpu/Traffic/Junction/JunctionRandom.h
index ff41237fb..9096b23a9 100644
--- a/src/gpu/Traffic/Junction/JunctionRandom.h
+++ b/src/gpu/Traffic/Junction/JunctionRandom.h
@@ -9,7 +9,7 @@
 
 class TrafficMovement;
 
-class VF_PUBLIC JunctionRandom :
+class VIRTUALFLUIDS_GPU_EXPORT JunctionRandom :
 	public Junction
 {
 
diff --git a/src/gpu/Traffic/Output/CarDisplay.h b/src/gpu/Traffic/Output/CarDisplay.h
index 5c7f4a643..966b5b2bc 100644
--- a/src/gpu/Traffic/Output/CarDisplay.h
+++ b/src/gpu/Traffic/Output/CarDisplay.h
@@ -9,7 +9,7 @@
 #include "Junction/Junction.h"
 
 
-class VF_PUBLIC CarDisplay {
+class VIRTUALFLUIDS_GPU_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 59603e473..57b45a0b9 100644
--- a/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h
+++ b/src/gpu/Traffic/Output/ConcBySpeedAndAcceleration.h
@@ -2,7 +2,7 @@
 
 #include "ConcentrationOutwriter.h"
 
-class VF_PUBLIC ConcBySpeedAndAcceleration :
+class VIRTUALFLUIDS_GPU_EXPORT ConcBySpeedAndAcceleration :
 	public ConcentrationOutwriter
 {
 public:
diff --git a/src/gpu/Traffic/Output/ConcentrationByPosition.h b/src/gpu/Traffic/Output/ConcentrationByPosition.h
index 48c93878e..a7cc1d5ad 100644
--- a/src/gpu/Traffic/Output/ConcentrationByPosition.h
+++ b/src/gpu/Traffic/Output/ConcentrationByPosition.h
@@ -2,7 +2,7 @@
 
 #include "ConcentrationOutwriter.h"
 
-class VF_PUBLIC ConcentrationByPosition:
+class VIRTUALFLUIDS_GPU_EXPORT ConcentrationByPosition:
 	public ConcentrationOutwriter
 {
 public:
diff --git a/src/gpu/Traffic/Output/ConcentrationOutwriter.h b/src/gpu/Traffic/Output/ConcentrationOutwriter.h
index e3c28b0f5..5b08dc2c8 100644
--- a/src/gpu/Traffic/Output/ConcentrationOutwriter.h
+++ b/src/gpu/Traffic/Output/ConcentrationOutwriter.h
@@ -5,7 +5,7 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-class VF_PUBLIC ConcentrationOutwriter
+class VIRTUALFLUIDS_GPU_EXPORT ConcentrationOutwriter
 {
 public:
 	virtual void resetConcentrations();
diff --git a/src/gpu/Traffic/RoadNetwork/RoadMaker.h b/src/gpu/Traffic/RoadNetwork/RoadMaker.h
index 2b92d8d1f..df6ecda17 100644
--- a/src/gpu/Traffic/RoadNetwork/RoadMaker.h
+++ b/src/gpu/Traffic/RoadNetwork/RoadMaker.h
@@ -6,7 +6,7 @@
 #include "Utilities/RandomHelper.h"
 
 
-struct VF_PUBLIC RoadMaker :
+struct VIRTUALFLUIDS_GPU_EXPORT RoadMaker :
 	public RoadNetworkData
 {
 public:
diff --git a/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h b/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
index e60a107d0..92928e5be 100644
--- a/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
+++ b/src/gpu/Traffic/RoadNetwork/RoadNetworkData.h
@@ -9,7 +9,7 @@
 #include "Junction/Junction.h"
 
 
-struct VF_PUBLIC RoadNetworkData
+struct VIRTUALFLUIDS_GPU_EXPORT RoadNetworkData
 {
 protected:
 	friend class TrafficMovement;
diff --git a/src/gpu/Traffic/Sink/Sink.h b/src/gpu/Traffic/Sink/Sink.h
index 4954b40eb..c83c6a5f2 100644
--- a/src/gpu/Traffic/Sink/Sink.h
+++ b/src/gpu/Traffic/Sink/Sink.h
@@ -2,7 +2,7 @@
 
 #include "SinkData.h"
 
-class VF_PUBLIC Sink
+class VIRTUALFLUIDS_GPU_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 fe573691c..90b8d1837 100644
--- a/src/gpu/Traffic/Sink/SinkData.h
+++ b/src/gpu/Traffic/Sink/SinkData.h
@@ -3,7 +3,7 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-struct VF_PUBLIC SinkData {
+struct VIRTUALFLUIDS_GPU_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 c5c28bf77..5e3f10db8 100644
--- a/src/gpu/Traffic/Sink/SinkRandom.h
+++ b/src/gpu/Traffic/Sink/SinkRandom.h
@@ -7,7 +7,7 @@
 
 #include "Utilities/RandomHelper.h"
 
-class VF_PUBLIC SinkRandom:
+class VIRTUALFLUIDS_GPU_EXPORT SinkRandom:
 	public Sink
 {
 private:
diff --git a/src/gpu/Traffic/Source/Source.h b/src/gpu/Traffic/Source/Source.h
index 111ed39ce..8d7555f1b 100644
--- a/src/gpu/Traffic/Source/Source.h
+++ b/src/gpu/Traffic/Source/Source.h
@@ -3,7 +3,7 @@
 
 #include "SourceData.h"
 
-class VF_PUBLIC Source
+class VIRTUALFLUIDS_GPU_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 71a6c0e8a..41bb34a9c 100644
--- a/src/gpu/Traffic/Source/SourceData.h
+++ b/src/gpu/Traffic/Source/SourceData.h
@@ -6,7 +6,7 @@
 #include <vector>
 
 
-struct VF_PUBLIC SourceData {
+struct VIRTUALFLUIDS_GPU_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 b7c6dac9a..b8adc9355 100644
--- a/src/gpu/Traffic/Source/SourceRandom.h
+++ b/src/gpu/Traffic/Source/SourceRandom.h
@@ -8,7 +8,7 @@
 
 
 
-class VF_PUBLIC SourceRandom:
+class VIRTUALFLUIDS_GPU_EXPORT SourceRandom:
 	public Source
 {
 private:
diff --git a/src/gpu/Traffic/TrafficMovement.h b/src/gpu/Traffic/TrafficMovement.h
index b1fb5ffd4..772199354 100644
--- a/src/gpu/Traffic/TrafficMovement.h
+++ b/src/gpu/Traffic/TrafficMovement.h
@@ -19,7 +19,7 @@ class TrafficLogger;
 //class CarDisplay;
 class TrafficTimestep;
 
-class VF_PUBLIC TrafficMovement
+class VIRTUALFLUIDS_GPU_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 c3d4356d9..a8b825ada 100644
--- a/src/gpu/Traffic/TrafficMovementFactory - Kopie.h	
+++ b/src/gpu/Traffic/TrafficMovementFactory - Kopie.h	
@@ -10,7 +10,7 @@
 #include "GridGenerator/StreetPointFinder/StreetPointFinder.h"
 
 
-class VF_PUBLIC TrafficMovementFactoryTest :
+class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactoryTest :
 	public TrafficMovementFactory {
 public:
 	TrafficMovementFactoryTest() {};
diff --git a/src/gpu/Traffic/TrafficMovementFactory.h b/src/gpu/Traffic/TrafficMovementFactory.h
index a73c5e881..9025ca607 100644
--- a/src/gpu/Traffic/TrafficMovementFactory.h
+++ b/src/gpu/Traffic/TrafficMovementFactory.h
@@ -11,7 +11,7 @@
 class TrafficMovement;
 class TrafficLogger;
 
-class VF_PUBLIC TrafficMovementFactory
+class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactory
 {
 public:
 	TrafficMovementFactory();
diff --git a/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h b/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
index c1ae8b9dd..ea779799c 100644
--- a/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
+++ b/src/gpu/Traffic/TrafficMovementFactoryTestRoads.h
@@ -10,7 +10,7 @@
 #include "GridGenerator/StreetPointFinder/StreetPointFinder.h"
 
 
-class VF_PUBLIC TrafficMovementFactoryTest :
+class VIRTUALFLUIDS_GPU_EXPORT TrafficMovementFactoryTest :
 	public TrafficMovementFactory {
 public:
 	TrafficMovementFactoryTest() {};
diff --git a/src/gpu/Traffic/Utilities/ConsoleColor.h b/src/gpu/Traffic/Utilities/ConsoleColor.h
index 1307b14e5..e45f35df7 100644
--- a/src/gpu/Traffic/Utilities/ConsoleColor.h
+++ b/src/gpu/Traffic/Utilities/ConsoleColor.h
@@ -2,7 +2,7 @@
 
 
 
-class VF_PUBLIC ConsoleColor
+class VIRTUALFLUIDS_GPU_EXPORT ConsoleColor
 {
 public:
 	static void setDefaultWhite();
diff --git a/src/gpu/Traffic/Utilities/Logger.h b/src/gpu/Traffic/Utilities/Logger.h
index 6d2544c96..c8d13e5c3 100644
--- a/src/gpu/Traffic/Utilities/Logger.h
+++ b/src/gpu/Traffic/Utilities/Logger.h
@@ -6,7 +6,7 @@
 #include <string>
 #include <fstream>
 
-class VF_PUBLIC TrafficLogger
+class VIRTUALFLUIDS_GPU_EXPORT TrafficLogger
 {
 private:
 	std::string filename;	
diff --git a/src/gpu/Traffic/Utilities/RandomHelper.h b/src/gpu/Traffic/Utilities/RandomHelper.h
index c13164060..3d3dac8e2 100644
--- a/src/gpu/Traffic/Utilities/RandomHelper.h
+++ b/src/gpu/Traffic/Utilities/RandomHelper.h
@@ -3,7 +3,7 @@
 #include <random>
 #include <VirtualFluidsDefinitions.h>
 
-class VF_PUBLIC RandomHelper
+class VIRTUALFLUIDS_GPU_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 ee7bce706..8a94ca138 100644
--- a/src/gpu/Traffic/Utilities/VectorHelper.h
+++ b/src/gpu/Traffic/Utilities/VectorHelper.h
@@ -5,7 +5,7 @@
 #include <VirtualFluidsDefinitions.h>
 #include "Core/DataTypes.h"
 
-class VF_PUBLIC VectorHelper
+class VIRTUALFLUIDS_GPU_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 fc50c3d6b..641fc96b7 100644
--- a/src/gpu/Traffic/Utilities/invalidInput_error.h
+++ b/src/gpu/Traffic/Utilities/invalidInput_error.h
@@ -4,7 +4,7 @@
 // using standard exceptions
 #include <stdexcept>
 
-class VF_PUBLIC invalidInput_error :
+class VIRTUALFLUIDS_GPU_EXPORT invalidInput_error :
 	public std::runtime_error
 {
 public:
diff --git a/src/gpu/VirtualFluidsDefinitions.in.h b/src/gpu/VirtualFluidsDefinitions.in.h
index 567b289f8..2d5822c1b 100644
--- a/src/gpu/VirtualFluidsDefinitions.in.h
+++ b/src/gpu/VirtualFluidsDefinitions.in.h
@@ -41,8 +41,8 @@
   #endif
 #endif
 
-// Now we use the generic helper definitions above to define VF_PUBLIC, VF_PROTECTED
-// and VF_PRIVATE. VF_PUBLIC is for symbols part of the public application programming
+// 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.
@@ -51,16 +51,16 @@
    // 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 VF_PUBLIC VF_SHARED_LIB_IMPORT
+      #define VIRTUALFLUIDS_GPU_EXPORT VF_SHARED_LIB_IMPORT
    #else
-      #define VF_PUBLIC VF_SHARED_LIB_EXPORT
+      #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 VF_PUBLIC
+   #define VIRTUALFLUIDS_GPU_EXPORT
    #define VF_PRIVATE
 #endif
-#define VF_PROTECTED VF_PUBLIC
+#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 221cc1013..8f7f9fa3f 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
@@ -20,7 +20,7 @@
 
 
 
-class VF_PUBLIC Communicator
+class VIRTUALFLUIDS_GPU_EXPORT Communicator
 {
 public:
 	static Communicator* getInstanz();
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
index ed263a124..064ffb4ac 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
@@ -13,7 +13,7 @@ class Parameter;
 class GridBuilder;
 class CudaMemoryManager;
 
-class VF_PUBLIC GridProvider
+class VIRTUALFLUIDS_GPU_EXPORT GridProvider
 {
 public:
     static std::shared_ptr<GridProvider> makeGridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaManager);
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
index a7b75b4a8..0b5c66eaf 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
@@ -16,7 +16,7 @@ class BoundaryValues;
 class BoundaryQs;
 class CoordNeighborGeoV;
 
-class VF_PUBLIC GridReader
+class VIRTUALFLUIDS_GPU_EXPORT GridReader
 	: public GridProvider
 {
 private:
diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
index 7ab3ddc68..d2ebcf217 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
@@ -22,8 +22,8 @@ private:
 	std::shared_ptr<GridBuilder> builder;
 
 public:
-    VF_PUBLIC GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaManager);
-	VF_PUBLIC virtual ~GridGenerator();
+    VIRTUALFLUIDS_GPU_EXPORT GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaManager);
+	VIRTUALFLUIDS_GPU_EXPORT virtual ~GridGenerator();
 
 	void allocArrays_CoordNeighborGeo() override;
 	void allocArrays_BoundaryValues() override;
diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
index d23a73f92..61892741d 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h
@@ -17,7 +17,7 @@
 class Parameter;
 class PorousMedia;
 
-class VF_PUBLIC CudaMemoryManager
+class VIRTUALFLUIDS_GPU_EXPORT CudaMemoryManager
 {
 public:
 	static std::shared_ptr<CudaMemoryManager> make(std::shared_ptr<Parameter> parameter);
diff --git a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h b/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
index ea5542a44..f9c6a5177 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h
@@ -11,7 +11,7 @@
 
 class Parameter;
 
-class VF_PUBLIC EnstrophyAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT EnstrophyAnalyzer
 {
 private:
 
diff --git a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
index 00970a610..902252733 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h
@@ -11,7 +11,7 @@
 
 class Parameter;
 
-class VF_PUBLIC KineticEnergyAnalyzer
+class VIRTUALFLUIDS_GPU_EXPORT KineticEnergyAnalyzer
 {
 private:
 
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
index c57780e06..d56020303 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h
@@ -12,7 +12,7 @@ class ADKernel;
 class Parameter;
 class PorousMedia;
 
-class VF_PUBLIC KernelFactory
+class VIRTUALFLUIDS_GPU_EXPORT KernelFactory
 {
 public:
 	virtual std::vector< std::shared_ptr< Kernel>> makeKernels(std::shared_ptr<Parameter> para) = 0;
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h
index f8fd6cbdd..d8fba02b3 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h
@@ -5,7 +5,7 @@
 
 class PorousMedia;
 
-class VF_PUBLIC KernelFactoryImp : public KernelFactory
+class VIRTUALFLUIDS_GPU_EXPORT KernelFactoryImp : public KernelFactory
 {
 public:
 	static std::shared_ptr< KernelFactoryImp> getInstance();
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/ADKernelMapper/ADKernelMapper.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/ADKernelMapper/ADKernelMapper.h
index b6a75a573..bdeee67bb 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/ADKernelMapper/ADKernelMapper.h
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/ADKernelMapper/ADKernelMapper.h
@@ -7,7 +7,7 @@
 #include <memory>
 #include <string>
 
-class VF_PUBLIC ADKernelMapper
+class VIRTUALFLUIDS_GPU_EXPORT ADKernelMapper
 {
 public:
 	static std::shared_ptr<ADKernelMapper> getInstance();
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h
index b9b1ec5fd..593a86978 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h
@@ -7,7 +7,7 @@
 #include <memory>
 #include <string>
 
-class VF_PUBLIC KernelMapper
+class VIRTUALFLUIDS_GPU_EXPORT KernelMapper
 {
 public:
 	static std::shared_ptr<KernelMapper> getInstance(); 
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
index 925c465b3..0366685db 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
@@ -29,7 +29,7 @@ class PreProcessor;
 class PreProcessorFactory;
 class TrafficMovementFactory;
 
-class VF_PUBLIC Simulation
+class VIRTUALFLUIDS_GPU_EXPORT Simulation
 {
 public:
 	Simulation();
diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp
index 01dd67f8d..7abf61b86 100644
--- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp
@@ -82,7 +82,7 @@ bool FileWriter::isPeriodicCell(std::shared_ptr<Parameter> para, int level, unsi
 		   (para->getParH(level)->coordZ_SP[number5] < para->getParH(level)->coordZ_SP[number1]);
 }
 
-void VF_PUBLIC FileWriter::writeCollectionFile(std::shared_ptr<Parameter> para, unsigned int timestep)
+void VIRTUALFLUIDS_GPU_EXPORT FileWriter::writeCollectionFile(std::shared_ptr<Parameter> para, unsigned int timestep)
 {
 
     std::string filename = para->getFName() + "_bin_ID_" + StringUtil::toString<int>(para->getMyID()) + "_t_" + StringUtil::toString<int>(timestep) + ".vtk";
@@ -126,7 +126,7 @@ void VF_PUBLIC FileWriter::writeCollectionFile(std::shared_ptr<Parameter> para,
     this->fileNamesForCollectionFile.clear();
 }
 
-void VF_PUBLIC FileWriter::writeCollectionFileMedian(std::shared_ptr<Parameter> para, unsigned int timestep)
+void VIRTUALFLUIDS_GPU_EXPORT FileWriter::writeCollectionFileMedian(std::shared_ptr<Parameter> para, unsigned int timestep)
 {
 
     std::string filename = para->getFName() + "_bin_median_ID_" + StringUtil::toString<int>(para->getMyID()) + "_t_" + StringUtil::toString<int>(timestep) + ".vtk";
diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.h b/src/gpu/VirtualFluids_GPU/Output/FileWriter.h
index 844e4a989..2aedd4b79 100644
--- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.h
+++ b/src/gpu/VirtualFluids_GPU/Output/FileWriter.h
@@ -15,25 +15,25 @@ class CudaMemoryManager;
 class FileWriter : public DataWriter
 {
 public:
-	VF_PUBLIC FileWriter() {}
+	VIRTUALFLUIDS_GPU_EXPORT FileWriter() {}
 
-	void VF_PUBLIC writeInit(std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaManager) override;
-	void VF_PUBLIC writeTimestep(std::shared_ptr<Parameter> para, unsigned int timestep) override;
+	void VIRTUALFLUIDS_GPU_EXPORT writeInit(std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaManager) override;
+	void VIRTUALFLUIDS_GPU_EXPORT writeTimestep(std::shared_ptr<Parameter> para, unsigned int timestep) override;
 
 private:
-	void VF_PUBLIC writeTimestep(std::shared_ptr<Parameter> para, unsigned int timestep, int level) override;
-	//void VF_PUBLIC writeParticle(Parameter* para, unsigned int t);
-	void VF_PUBLIC writeUnstrucuredGridLT(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
-	void VF_PUBLIC writeUnstrucuredGridLTConc(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
-	void VF_PUBLIC writeUnstrucuredGridMedianLT(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
-	void VF_PUBLIC writeUnstrucuredGridMedianLTConc(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
-	bool VF_PUBLIC isPeriodicCell(std::shared_ptr<Parameter> para, int level, unsigned int number2, unsigned int number1, unsigned int number3, unsigned int number5);
+	void VIRTUALFLUIDS_GPU_EXPORT writeTimestep(std::shared_ptr<Parameter> para, unsigned int timestep, int level) override;
+	//void VIRTUALFLUIDS_GPU_EXPORT writeParticle(Parameter* para, unsigned int t);
+	void VIRTUALFLUIDS_GPU_EXPORT writeUnstrucuredGridLT(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
+	void VIRTUALFLUIDS_GPU_EXPORT writeUnstrucuredGridLTConc(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
+	void VIRTUALFLUIDS_GPU_EXPORT writeUnstrucuredGridMedianLT(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
+	void VIRTUALFLUIDS_GPU_EXPORT writeUnstrucuredGridMedianLTConc(std::shared_ptr<Parameter> para, int level, std::vector<std::string >& fname);
+	bool VIRTUALFLUIDS_GPU_EXPORT isPeriodicCell(std::shared_ptr<Parameter> para, int level, unsigned int number2, unsigned int number1, unsigned int number3, unsigned int number5);
 
 	FileWriter(const FileWriter& fileWriter) {};
 
-    void VF_PUBLIC writeCollectionFile( std::shared_ptr<Parameter> para, unsigned int timestep );
+    void VIRTUALFLUIDS_GPU_EXPORT writeCollectionFile( std::shared_ptr<Parameter> para, unsigned int timestep );
 
-    void VF_PUBLIC writeCollectionFileMedian( std::shared_ptr<Parameter> para, unsigned int timestep );
+    void VIRTUALFLUIDS_GPU_EXPORT writeCollectionFileMedian( std::shared_ptr<Parameter> para, unsigned int timestep );
 
     std::vector< std::string > fileNamesForCollectionFile;
     std::vector< std::string > fileNamesForCollectionFileMedian;
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index c090d4d18..f658e3eb8 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -300,7 +300,7 @@ struct ParameterStruct{
 	////////////////////////////////////////////////////////////////////////////
 };
 
-class VF_PUBLIC Parameter
+class VIRTUALFLUIDS_GPU_EXPORT Parameter
 {
 public:
 	////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
index 784468c57..141c2ddfa 100644
--- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
+++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h
@@ -9,7 +9,7 @@
 class PreProcessor;
 class Parameter;
 
-class VF_PUBLIC PreProcessorFactory
+class VIRTUALFLUIDS_GPU_EXPORT PreProcessorFactory
 {
 public:
 	virtual std::shared_ptr<PreProcessor> makePreProcessor(std::vector<PreProcessorType> preProcessorTypes, std::shared_ptr<Parameter> para) = 0;
diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h
index e26ce632f..843dc9349 100644
--- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h
+++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h
@@ -5,7 +5,7 @@
 
 class PreProcessorStrategy;
 
-class VF_PUBLIC PreProcessorFactoryImp : public PreProcessorFactory
+class VIRTUALFLUIDS_GPU_EXPORT PreProcessorFactoryImp : public PreProcessorFactory
 {
 public:
 	static std::shared_ptr< PreProcessorFactoryImp> getInstance();
-- 
GitLab