diff --git a/Modules/Core/ImageBase/include/otbConvertPixelBuffer.h b/Modules/Core/ImageBase/include/otbConvertPixelBuffer.h
index dbca823f39cee3782affc548902deef4b9ee9b7b..950c5574131a893ac884212830562c0f3923b77f 100644
--- a/Modules/Core/ImageBase/include/otbConvertPixelBuffer.h
+++ b/Modules/Core/ImageBase/include/otbConvertPixelBuffer.h
@@ -24,6 +24,7 @@
 
 #include <complex>
 #include "itkObject.h"
+#include "OTBImageBaseExport.h"
 
 namespace otb
 {
@@ -46,7 +47,7 @@ template <
   typename OutputPixelType,
   class OutputConvertTraits
   >
-class ConvertPixelBuffer
+class OTBImageBase_EXPORT_TEMPLATE ConvertPixelBuffer
 {
 public:
   /** Determine the output data type. */
diff --git a/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h b/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
index cf465840088abb0e274b6b8f4a7999a2dc6c107d..0f9067223c137d37d794940df64e1e0040a53a4d 100644
--- a/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
+++ b/Modules/Core/ImageBase/include/otbDefaultConvertPixelTraits.h
@@ -22,13 +22,14 @@
 #define otbDefaultConvertPixelTraits_h
 
 #include "itkDefaultConvertPixelTraits.h"
+#include "OTBImageBaseExport.h"
 
 namespace otb 
 {
 
 
 template < typename PixelType>
-class DefaultConvertPixelTraits 
+class OTBImageBase_EXPORT_TEMPLATE DefaultConvertPixelTraits 
 : public itk::DefaultConvertPixelTraits < PixelType >
 {
 public:
diff --git a/Modules/Core/ImageBase/include/otbExtractROI.h b/Modules/Core/ImageBase/include/otbExtractROI.h
index a2a294268fc25aa997c9986b17436e8d5524857c..e6346381ed9fb298d6cbd22b0d284880d8589509 100644
--- a/Modules/Core/ImageBase/include/otbExtractROI.h
+++ b/Modules/Core/ImageBase/include/otbExtractROI.h
@@ -24,6 +24,7 @@
 #include "otbExtractROIBase.h"
 #include "otbImage.h"
 #include "itkMacro.h"
+#include "OTBImageBaseExport.h"
 
 namespace otb
 {
@@ -39,7 +40,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TInputPixel, class TOutputPixel>
-class ITK_EXPORT ExtractROI :
+class OTBImageBase_EXPORT_TEMPLATE ExtractROI :
   public ExtractROIBase<Image<TInputPixel, 2>, Image<TOutputPixel, 2> >
 {
 public:
diff --git a/Modules/Core/ImageBase/include/otbExtractROIBase.h b/Modules/Core/ImageBase/include/otbExtractROIBase.h
index 0fa39bff46f2e415ad18dc45863e0e1542ba009e..913cbc5cd0e92e5b3baa430fed5e85b90302e167 100644
--- a/Modules/Core/ImageBase/include/otbExtractROIBase.h
+++ b/Modules/Core/ImageBase/include/otbExtractROIBase.h
@@ -45,7 +45,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TInputImage, class TOutputImage>
-class ITK_EXPORT ExtractROIBase :
+class ExtractROIBase :
   public itk::ImageToImageFilter<TInputImage, TOutputImage>
 {
 public:
diff --git a/Modules/Core/ImageBase/include/otbImageFunctionAdaptor.h b/Modules/Core/ImageBase/include/otbImageFunctionAdaptor.h
index 4beb338e77ad403bacd77ab8a96fce3bc5229b3d..65ab555a26b2075572182cddf5e74f86ce6fb710 100644
--- a/Modules/Core/ImageBase/include/otbImageFunctionAdaptor.h
+++ b/Modules/Core/ImageBase/include/otbImageFunctionAdaptor.h
@@ -24,7 +24,7 @@
 #include "itkImageFunction.h"
 
 #include "otbVariableLengthVectorConverter.h"
-
+#include "OTBImageBaseExport.h"
 
 #include <complex>
 
@@ -46,7 +46,7 @@ namespace otb
  */
 
 template< class TInternalImageFunctionType, class TOutputPrecision = double >
-class ITK_EXPORT ImageFunctionAdaptor :
+class OTBImageBase_EXPORT_TEMPLATE ImageFunctionAdaptor :
     public itk::ImageFunction< typename TInternalImageFunctionType::InputImageType,
                                itk::VariableLengthVector<TOutputPrecision>,
                                typename TInternalImageFunctionType::CoordRepType >
diff --git a/Modules/Core/ImageBase/include/otbImageOfVectorsToMonoChannelExtractROI.h b/Modules/Core/ImageBase/include/otbImageOfVectorsToMonoChannelExtractROI.h
index b8436d79c44543b4284e556a50b10794c54d3b7c..80f09033585adca016ae0eb52761bcbe955ee3ac 100644
--- a/Modules/Core/ImageBase/include/otbImageOfVectorsToMonoChannelExtractROI.h
+++ b/Modules/Core/ImageBase/include/otbImageOfVectorsToMonoChannelExtractROI.h
@@ -24,6 +24,7 @@
 #include "otbExtractROIBase.h"
 #include "otbImage.h"
 #include "otbVectorImage.h"
+#include "OTBImageBaseExport.h"
 
 #include "itkMacro.h"
 
@@ -37,7 +38,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TInputImage, class TOutputImage>
-class ITK_EXPORT ImageOfVectorsToMonoChannelExtractROI :
+class OTBImageBase_EXPORT_TEMPLATE ImageOfVectorsToMonoChannelExtractROI :
   public ExtractROIBase<TInputImage, TOutputImage>
 {
 public:
diff --git a/Modules/Core/ImageBase/include/otbMetaImageFunction.h b/Modules/Core/ImageBase/include/otbMetaImageFunction.h
index 0706709486ba55dba36155ee1812675ab2f518ea..a7b0970435e2ddba00c88bd545fcbdbe06ba1e1c 100644
--- a/Modules/Core/ImageBase/include/otbMetaImageFunction.h
+++ b/Modules/Core/ImageBase/include/otbMetaImageFunction.h
@@ -24,6 +24,7 @@
 #include "itkFunctionBase.h"
 #include "itkPoint.h"
 #include "itkVariableLengthVector.h"
+#include "OTBImageBaseExport.h"
 
 #include <vector>
 
@@ -44,7 +45,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TOutputPrecision = double, class TCoordRep = double>
-class ITK_EXPORT MetaImageFunction
+class OTBImageBase_EXPORT_TEMPLATE MetaImageFunction
 : public itk::FunctionBase<itk::Point<TCoordRep, 2>,
   itk::VariableLengthVector<TOutputPrecision> >
 {
diff --git a/Modules/Core/ImageBase/include/otbMultiChannelExtractROI.h b/Modules/Core/ImageBase/include/otbMultiChannelExtractROI.h
index 76bc3f189875094899ff151b1ba62f0c4098d2e4..6a621a2f911b4290d2b000faca2098f7db0146b5 100644
--- a/Modules/Core/ImageBase/include/otbMultiChannelExtractROI.h
+++ b/Modules/Core/ImageBase/include/otbMultiChannelExtractROI.h
@@ -23,6 +23,7 @@
 
 #include "otbExtractROIBase.h"
 #include "otbVectorImage.h"
+#include "OTBImageBaseExport.h"
 
 #include "itkMacro.h"
 #include <vector>
@@ -43,7 +44,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TInputPixelType, class TOutputPixelType>
-class ITK_EXPORT MultiChannelExtractROI :
+class OTBImageBase_EXPORT_TEMPLATE MultiChannelExtractROI :
   public ExtractROIBase<VectorImage<TInputPixelType, 2>, VectorImage<TOutputPixelType, 2> >
 {
 public:
diff --git a/Modules/Core/ImageBase/include/otbMultiToMonoChannelExtractROI.h b/Modules/Core/ImageBase/include/otbMultiToMonoChannelExtractROI.h
index 8c3647fed39e98a1a21ab3849509d62399dfe4a6..f30ca55b4b336d07caf234bd5e00fc840bbfaf95 100644
--- a/Modules/Core/ImageBase/include/otbMultiToMonoChannelExtractROI.h
+++ b/Modules/Core/ImageBase/include/otbMultiToMonoChannelExtractROI.h
@@ -24,6 +24,7 @@
 #include "otbExtractROIBase.h"
 #include "otbImage.h"
 #include "otbVectorImage.h"
+#include "OTBImageBaseExport.h"
 
 #include "itkMacro.h"
 
@@ -42,7 +43,7 @@ namespace otb
  * \ingroup OTBImageBase
  */
 template <class TInputPixelType, class TOutputPixelType>
-class ITK_EXPORT MultiToMonoChannelExtractROI :
+class OTBImageBase_EXPORT_TEMPLATE MultiToMonoChannelExtractROI :
 //    public ExtractROIBase< itk::VectorImage<TInputPixelType, 2> , itk::Image<TOutputPixelType, 2> >
   public ExtractROIBase<VectorImage<TInputPixelType, 2>, Image<TOutputPixelType, 2> >
 {
diff --git a/Modules/Core/ImageBase/include/otbRemoteSensingRegion.h b/Modules/Core/ImageBase/include/otbRemoteSensingRegion.h
index 1c5f411086f34f81bced50ffd4117086fafba66c..756404c1dfabfd5315eb3894e9c120d2702092c9 100644
--- a/Modules/Core/ImageBase/include/otbRemoteSensingRegion.h
+++ b/Modules/Core/ImageBase/include/otbRemoteSensingRegion.h
@@ -24,7 +24,7 @@
 #include <algorithm>
 #include <iomanip>
 
-
+#include "OTBImageBaseExport.h"
 #include "otbImageKeywordlist.h"
 #include "itkImageRegion.h"
 #include <string>
@@ -56,7 +56,7 @@ namespace otb
  */
 
 template <class TType>
-class ITK_EXPORT RemoteSensingRegion : public itk::Region
+class OTBImageBase_EXPORT_TEMPLATE RemoteSensingRegion : public itk::Region
 {
 public:
   /** Standard class typedefs. */