diff --git a/Modules/Adapters/GdalAdapters/include/otbSpatialReference.h b/Modules/Adapters/GdalAdapters/include/otbSpatialReference.h
index 2605ad12f08900c271cc0d49ce6bc20666964a98..37611309fd1244773b358d97f5ee36b087bade10 100644
--- a/Modules/Adapters/GdalAdapters/include/otbSpatialReference.h
+++ b/Modules/Adapters/GdalAdapters/include/otbSpatialReference.h
@@ -21,7 +21,6 @@
 #define otbSpatialReference_h
 
 #include "OTBGdalAdaptersExport.h"
-#include "ogr_spatialref.h"
 
 #include <memory>
 #include <string>
@@ -34,6 +33,10 @@
 // to have dll-interface to be used by clients of class 'otb::SpatialReference'
 // As long as otb::SpatialReference::m_SR is private no need to export this type.
 #endif
+
+// causes warning C4251 on Windows
+#include "ogr_spatialref.h"
+
 class OGRSpatialReference;
 
 namespace otb
diff --git a/Modules/Adapters/GdalAdapters/src/otbCoordinateTransformation.cxx b/Modules/Adapters/GdalAdapters/src/otbCoordinateTransformation.cxx
index 393107ac264f5a4b7a8ee7f17040fc0ee581a6ae..574444a7f6d5564dfaaa6e85b46680c81fe7e9a4 100644
--- a/Modules/Adapters/GdalAdapters/src/otbCoordinateTransformation.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbCoordinateTransformation.cxx
@@ -20,7 +20,14 @@
 
 #include "otbCoordinateTransformation.h"
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4251)
 #include "ogr_spatialref.h"
+#pragma warning(pop)
+#else
+#include "ogr_spatialref.h"
+#endif
 
 #include <sstream>
 #include <stdexcept>
diff --git a/Modules/Adapters/GdalAdapters/src/otbOGRGeometryWrapper.cxx b/Modules/Adapters/GdalAdapters/src/otbOGRGeometryWrapper.cxx
index 5b6f84386f808021ca5eeceeea3556b2c8dbc7db..06852f3fc57fd34e51d7324c12eeedbe339be020 100644
--- a/Modules/Adapters/GdalAdapters/src/otbOGRGeometryWrapper.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbOGRGeometryWrapper.cxx
@@ -23,7 +23,16 @@
 /*===============================[ Includes ]================================*/
 /*===========================================================================*/
 #include "otbOGRGeometryWrapper.h"
+
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4251)
 #include "ogr_geometry.h"
+#pragma warning(pop)
+#else
+#include "ogr_geometry.h"
+#endif
 
 #ifdef _MSC_VER
 // warning conversion int -> bool
diff --git a/Modules/Adapters/GdalAdapters/src/otbSpatialReference.cxx b/Modules/Adapters/GdalAdapters/src/otbSpatialReference.cxx
index 12b160b7a7abf9b899cf192e5f4778935146f720..120f8d0ae2bbd12b4207965c775e567a8d73806c 100644
--- a/Modules/Adapters/GdalAdapters/src/otbSpatialReference.cxx
+++ b/Modules/Adapters/GdalAdapters/src/otbSpatialReference.cxx
@@ -20,7 +20,7 @@
 
 #include "otbSpatialReference.h"
 
-#include "ogr_spatialref.h"
+
 #include "cpl_conv.h"
 #ifdef __clang__
 #pragma clang diagnostic ignored "-Wunused-local-typedefs"