diff --git a/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h b/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
index e3b5ad2c41ca7fe6f285087f6d02b420738f0ea6..f88760fd78a3a34c647ecb86a1de5f1beeec923f 100644
--- a/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
+++ b/Modules/Adapters/CurlAdapters/include/otbCurlHelper.h
@@ -33,7 +33,7 @@ namespace otb
  *
  * \ingroup OTBCurlAdapters
  */
-class ITK_EXPORT CurlHelper : public CurlHelperInterface
+class OTBCurlAdapters_EXPORT CurlHelper : public CurlHelperInterface
 {
 public:
   /** Standard class typedefs. */
@@ -46,11 +46,11 @@ public:
   itkNewMacro(Self);
 
   bool TestUrlAvailability(const std::string& url) const ITK_OVERRIDE;
-  
+
   bool IsCurlReturnHttpError(const std::string& url) const;
-  
+
   int RetrieveFile(const std::ostringstream& urlStream, std::string filename) const ITK_OVERRIDE;
-  
+
   int RetrieveFile(const std::string& urlString, std::string filename) const ITK_OVERRIDE;
 
   int RetrieveUrlInMemory(const std::string& urlString, std::string& output) const ITK_OVERRIDE;
@@ -60,7 +60,7 @@ public:
                         int maxConnect) const ITK_OVERRIDE;
 
   itkGetMacro(Timeout,long int);
-  
+
   itkSetMacro(Timeout,long int);
 
 protected:
diff --git a/Modules/Adapters/CurlAdapters/include/otbCurlHelperInterface.h b/Modules/Adapters/CurlAdapters/include/otbCurlHelperInterface.h
index 127eb5386aca4bce8bfc4f0f2e645bc3ba97c73a..98c620a9e881a750fa0c26e689723c534df6b730 100644
--- a/Modules/Adapters/CurlAdapters/include/otbCurlHelperInterface.h
+++ b/Modules/Adapters/CurlAdapters/include/otbCurlHelperInterface.h
@@ -21,6 +21,7 @@
 #include <iosfwd>
 #include "itkObject.h"
 #include "itkObjectFactory.h"
+#include "OTBCurlAdaptersExport.h"
 
 namespace otb
 {
@@ -34,7 +35,7 @@ namespace otb
  *
  * \ingroup OTBCurlAdapters
  */
-class ITK_EXPORT CurlHelperInterface : public itk::Object
+class OTBCurlAdapters_EXPORT CurlHelperInterface : public itk::Object
 {
 public:
   /** Standard class typedefs. */
diff --git a/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.h b/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.h
index 991b2440ebdd1ecc2d3f9290422119c84f660b33..bda4119a11ef2d9376879b1bbe0b93e81e580e80 100644
--- a/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.h
+++ b/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.h
@@ -22,11 +22,14 @@
 #include <boost/shared_ptr.hpp>
 class OGRFieldDefn;
 class OGRFeature;
+#if defined(_MSC_VER)
 #pragma warning ( push )
 #pragma warning ( disable: 4251 )
 #include "ogr_core.h" // OGR enums
 #pragma warning ( pop )
-
+#else
+#include "ogr_core.h" // OGR enums
+#endif
 #include "itkIndent.h"
 
 #include "OTBGdalAdaptersExport.h"
@@ -173,7 +176,7 @@ public:
 
   /** \copydoc Field::ogr() const */
   OGRField & ogr();
-    
+
 private:
   /**\name Unchecked definitions
    * All the definitions that follow do the real work. However, they are not the
@@ -208,11 +211,11 @@ private:
    * All the fields decoding is at the wrong place (\c OGRFeature instead of
    * \c OGRField) => need for an index.
    */
-   
+
   int        m_index;
 };
 
-} 
+}
 } // end namespace otb::ogr
 
 #ifndef OTB_MANUAL_INSTANTIATION
diff --git a/Modules/Adapters/OSSIMAdapters/include/otbDateTimeAdapter.h b/Modules/Adapters/OSSIMAdapters/include/otbDateTimeAdapter.h
index f8c3548078a900a29137e24bd154784397b5481e..4f5c7aa8be0149b354c3f54667f8ef9e5fc3d7cf 100644
--- a/Modules/Adapters/OSSIMAdapters/include/otbDateTimeAdapter.h
+++ b/Modules/Adapters/OSSIMAdapters/include/otbDateTimeAdapter.h
@@ -20,6 +20,7 @@
 
 #include "itkObject.h"
 #include "itkObjectFactory.h"
+#include "OTBOSSIMAdaptersExport.h"
 
 class ossimLocalTm;
 //class ossimDate;
@@ -36,7 +37,7 @@ namespace otb
  *
  * \ingroup OTBOSSIMAdapters
  **/
-class DateTimeAdapter : public itk::Object
+class OTBOSSIMAdapters_EXPORT DateTimeAdapter : public itk::Object
 {
 public:
   /** Standard class typedefs. */
@@ -50,35 +51,35 @@ public:
 
   /** Run-time type information (and related methods). */
   itkTypeMacro(DateTimeAdapter, itk::Object);
-  
+
   /** Year Accessor*/
   int GetYear();
-  
+
   /** Month Accessor*/
   int GetMonth();
-  
+
   /** Day Accessor*/
   int GetDay();
-  
+
   /** Hour Accessor*/
   int GetHour();
-  
+
   /** Minute Accessor*/
   int GetMinute();
-  
+
   /** Seconds Accessor*/
   double GetSeconds() const;
-  
+
   /** Set the date and time from an Iso8601 string
    *  Return true if the date is valid
    */
   bool SetFromIso8601(const std::string &date);
-  
+
   /** Return the delta with an other date, expressed in seconds */
   double GetDeltaInSeconds(const DateTimeAdapter *pastDate);
-  
+
   // TODO : add print self function
-  
+
 protected:
   DateTimeAdapter();
   ~DateTimeAdapter() ITK_OVERRIDE;
diff --git a/Modules/Adapters/OSSIMAdapters/include/otbMetaDataKey.h b/Modules/Adapters/OSSIMAdapters/include/otbMetaDataKey.h
index 4cc54ab4bd9bd88bae9e648572814b24d8cb7875..180dfd57162969ae6515eac6fed8837c8f9a67b7 100644
--- a/Modules/Adapters/OSSIMAdapters/include/otbMetaDataKey.h
+++ b/Modules/Adapters/OSSIMAdapters/include/otbMetaDataKey.h
@@ -104,7 +104,7 @@ namespace MetaDataKey
 
   };
 
-  KeyType GetKeyType(const std::string& name);
+  KeyType OTBOSSIMAdapters_EXPORT GetKeyType(const std::string& name);
 
   typedef std::vector<double>               VectorType;
   typedef std::vector<bool>                 BoolVectorType;
@@ -119,7 +119,7 @@ namespace MetaDataKey
  *
  * \ingroup OTBOSSIMAdapters
  */
-class ITK_EXPORT OTB_GCP
+class OTBOSSIMAdapters_EXPORT OTB_GCP
 {
 public:
 
diff --git a/Modules/Core/CommandLineParser/otb-module.cmake b/Modules/Core/CommandLineParser/otb-module.cmake
index ccc21e403e61bdf936024f0eb0b3f7397a0b8e58..86881a5d077703cd64c4884dd943d6bcb0940402 100644
--- a/Modules/Core/CommandLineParser/otb-module.cmake
+++ b/Modules/Core/CommandLineParser/otb-module.cmake
@@ -1,7 +1,6 @@
 set(DOCUMENTATION "TODO")
 
 otb_module(OTBCommandLineParser
-ENABLE_SHARED
   DEPENDS
     OTBCommon
     OTBITK
diff --git a/Modules/Core/Common/include/otbConfigurationManager.h b/Modules/Core/Common/include/otbConfigurationManager.h
index 6d8e7bc2ecf2eff754811c652bcf597f95041703..60e95777f0098982aefa3af2ae5dbd6f52332d4a 100644
--- a/Modules/Core/Common/include/otbConfigurationManager.h
+++ b/Modules/Core/Common/include/otbConfigurationManager.h
@@ -29,6 +29,8 @@
 #include <string>
 #include <boost/cstdint.hpp>
 
+#include "OTBCommonExport.h"
+
 namespace otb
 {
 /**
@@ -41,7 +43,7 @@ namespace otb
  * Please refer to each static method documentation for available
  * configuration values and related environment variables.
  */
-class ConfigurationManager
+class OTBCommon_EXPORT ConfigurationManager
 {
 public:
 #if ITK_VERSION_MAJOR < 4 || (ITK_VERSION_MAJOR == 4 && ITK_VERSION_MINOR <= 8)
@@ -51,7 +53,7 @@ public:
 #endif
 
   /**
-   * DEMDirectory is a directory were DEM tiles are stored. 
+   * DEMDirectory is a directory were DEM tiles are stored.
    *
    * If environment variable OTB_DEM_DIRECTORY is defined,
    * returns it contents as a string
@@ -74,7 +76,7 @@ public:
    *
    * If environment variable OTB_MAX_RAM_HINT is defined and could be
    * converted to int, return its content as a 64 bits unsigned int.
-   * Else, returns default value, which is 128 Mb 
+   * Else, returns default value, which is 128 Mb
    *
    */
   static RAMValueType GetMaxRAMHint();
diff --git a/Modules/Core/Common/include/otbFilterWatcherBase.h b/Modules/Core/Common/include/otbFilterWatcherBase.h
index e9d74750b441910134251786f3dff390eb79a273..ee4e61ce4b426d5f0a0cba3d643654fe972fc0a6 100644
--- a/Modules/Core/Common/include/otbFilterWatcherBase.h
+++ b/Modules/Core/Common/include/otbFilterWatcherBase.h
@@ -25,9 +25,11 @@
 #include "itkProcessObject.h"
 #include "itkTimeProbe.h"
 
+#include "OTBCommonExport.h"
+
 namespace otb
-{
 
+{
 /** \class FilterWatcherBase
  *  \brief This class is an abstract class
  *         Provides an interface to progress task mechanic
@@ -40,7 +42,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class /*ITK_EXPORT*/ FilterWatcherBase
+class OTBCommon_EXPORT FilterWatcherBase
 {
 public:
 
diff --git a/Modules/Core/Common/include/otbStandardFilterWatcher.h b/Modules/Core/Common/include/otbStandardFilterWatcher.h
index 8bced112e2828dec3478bb035260ad881394bfb6..acd3f60f51efe24601f02356040875ee22e1c145 100644
--- a/Modules/Core/Common/include/otbStandardFilterWatcher.h
+++ b/Modules/Core/Common/include/otbStandardFilterWatcher.h
@@ -48,7 +48,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class /*ITK_EXPORT*/ StandardFilterWatcher : public FilterWatcherBase
+class OTBCommon_EXPORT StandardFilterWatcher : public FilterWatcherBase
 {
 public:
 
diff --git a/Modules/Core/Common/include/otbStandardOneLineFilterWatcher.h b/Modules/Core/Common/include/otbStandardOneLineFilterWatcher.h
index 453249db3a6ee00a51c847d2ece6373a7f5cc936..642a24e6fe82c8195d063ecfdbd4bc722b2e8a03 100644
--- a/Modules/Core/Common/include/otbStandardOneLineFilterWatcher.h
+++ b/Modules/Core/Common/include/otbStandardOneLineFilterWatcher.h
@@ -48,7 +48,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class /*ITK_EXPORT*/ StandardOneLineFilterWatcher : public FilterWatcherBase
+class OTBCommon_EXPORT StandardOneLineFilterWatcher : public FilterWatcherBase
 {
 public:
 
diff --git a/Modules/Core/Common/include/otbStandardWriterWatcher.h b/Modules/Core/Common/include/otbStandardWriterWatcher.h
index 77a3f092e0d96d3b9bc2952d606f01e30d8852c1..5c5d593127026b9ec13264dbfee14ea453d88dd4 100644
--- a/Modules/Core/Common/include/otbStandardWriterWatcher.h
+++ b/Modules/Core/Common/include/otbStandardWriterWatcher.h
@@ -48,7 +48,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class /*ITK_EXPORT*/ StandardWriterWatcher : public WriterWatcherBase
+class OTBCommon_EXPORT StandardWriterWatcher : public WriterWatcherBase
 {
 public:
 
diff --git a/Modules/Core/Common/include/otbSystem.h b/Modules/Core/Common/include/otbSystem.h
index ad2277e363066bde82ea557984fc55957f42132c..b15e48d572eb08de281476e653c5cc012a1a4248 100644
--- a/Modules/Core/Common/include/otbSystem.h
+++ b/Modules/Core/Common/include/otbSystem.h
@@ -24,6 +24,8 @@
 #include "itksys/SystemTools.hxx"
 #include "itkMacro.h"
 
+#include "OTBCommonExport.h"
+
 namespace otb
 {
 
@@ -35,7 +37,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class ITK_EXPORT System
+class OTBCommon_EXPORT System
 {
 public:
 
diff --git a/Modules/Core/Common/include/otbUtils.h b/Modules/Core/Common/include/otbUtils.h
index 1784646cd181b5cbafda0f81218bddc237e846ad..4135543b02321c1a5c572af18bf1a5f62d083836 100644
--- a/Modules/Core/Common/include/otbUtils.h
+++ b/Modules/Core/Common/include/otbUtils.h
@@ -19,6 +19,7 @@
 #define otbUtils_h
 
 #include "itkMacro.h"
+#include "OTBCommonExport.h"
 
 namespace otb
 {
@@ -34,10 +35,11 @@ namespace otb
 namespace Utils
 {
   /** Check that the values for lon, lat are reasonable */
-  bool IsLonLatValid(double lon, double lat);
+  bool OTBCommon_EXPORT IsLonLatValid(double lon, double lat);
 
   template <class T>
-    inline std::string ConvertToString (const T& v)
+    inline std::string
+  OTBCommon_EXPORT ConvertToString (const T& v)
   {
     std::stringstream s;
     s << v;
diff --git a/Modules/Core/Common/include/otbWriterWatcherBase.h b/Modules/Core/Common/include/otbWriterWatcherBase.h
index eacefa45347772a437d76dd6eedbd6dd4c8bbed5..1fd6203f0d23db884278d9bc6ea5823c0bec463a 100644
--- a/Modules/Core/Common/include/otbWriterWatcherBase.h
+++ b/Modules/Core/Common/include/otbWriterWatcherBase.h
@@ -25,6 +25,8 @@
 #include "itkProcessObject.h"
 #include "itkTimeProbe.h"
 
+#include "OTBCommonExport.h"
+
 namespace otb
 {
 
@@ -43,7 +45,7 @@ namespace otb
  *
  * \ingroup OTBCommon
  */
-class /*ITK_EXPORT*/ WriterWatcherBase
+class OTBCommon_EXPORT WriterWatcherBase
 {
 public:
 
diff --git a/Modules/Core/Metadata/include/otbNoDataHelper.h b/Modules/Core/Metadata/include/otbNoDataHelper.h
index 4ab2546bb990d8c235bf8827d8d471c26c94d149..b767803d921e0226ae056b8c634a122374793e9f 100644
--- a/Modules/Core/Metadata/include/otbNoDataHelper.h
+++ b/Modules/Core/Metadata/include/otbNoDataHelper.h
@@ -21,6 +21,7 @@
 #include <cassert>
 #include "vnl/vnl_math.h"
 #include <itkVariableLengthVector.h>
+#include "OTBMetadataExport.h"
 
 namespace itk
 {
@@ -30,17 +31,17 @@ class MetaDataDictionary;
 namespace otb
 {
 
-/** 
+/**
  * Reads no data flag from the MetaDataDictionnary dict to flags and values
- * vectors. Returns true upon success. 
+ * vectors. Returns true upon success.
  */
-bool ReadNoDataFlags(const itk::MetaDataDictionary& dict, std::vector<bool> & flags, std::vector<double> & values);
+bool OTBMetadata_EXPORT ReadNoDataFlags(const itk::MetaDataDictionary& dict, std::vector<bool> & flags, std::vector<double> & values);
 
-/** 
+/**
  * Write no data flags to the MetaDataDictionnary dict from flags and values
- * vectors. Returns true upon success. 
+ * vectors. Returns true upon success.
  */
-void WriteNoDataFlags(const std::vector<bool> & flags, const std::vector<double> & values, itk::MetaDataDictionary& dict);
+void OTBMetadata_EXPORT WriteNoDataFlags(const std::vector<bool> & flags, const std::vector<double> & values, itk::MetaDataDictionary& dict);
 
 /**
 * Test if the pixel corresponds to a no data pixel according to a
@@ -52,7 +53,8 @@ void WriteNoDataFlags(const std::vector<bool> & flags, const std::vector<double>
 * value for each band. If flag is 0, the value will be ignored.
 * \param nanIsNoData If true, NaN values will be reported as no-data.
 */
-template<typename T> bool IsNoData(const T & pixel, const
+template<typename T> bool
+OTBMetadata_EXPORT IsNoData(const T & pixel, const
                                    std::vector<bool> & flags, const std::vector<double> & values, bool nanIsNoData = false) {
   assert(flags.size()>0);
   assert(values.size()>0);
@@ -75,19 +77,20 @@ template<typename T> bool IsNoData(const T & pixel, const
 * Reads a pixel and change the no data value if it is found. No data
 * value is changed either if the pixel value is NaN or if the pixel
 * value equals the no data value and flag is true.
-* 
+*
 * \param pixel The pixel to process \param flags A vector of size > 1
 * containing a flag per band to indicate if a no data value is
 * available for this band
 * \param values A vector of size > 1 corresponding to the current no data
 * value for each band. If flag is 0, the value will be ignored.
 * \param newValues A vector of size > 1 corresponding to the new no data
-* value for each band. If flag is 0, the value will be ignored 
+* value for each band. If flag is 0, the value will be ignored
 * \param nanIsNoData If true, NaN values will be considered as no-data
 * and changed as well.
 *
 */
-template<typename T> T ChangeNoData(const T & pixel, const
+template<typename T> T
+OTBMetadata_EXPORT ChangeNoData(const T & pixel, const
                                     std::vector<bool> & flags,
                                     const std::vector<double> & values,
                                     const std::vector<double> & newValues,
@@ -95,7 +98,7 @@ template<typename T> T ChangeNoData(const T & pixel, const
   assert(flags.size()>0);
   assert(values.size()>0);
   assert(newValues.size()>0);
-  
+
   if(nanIsNoData && vnl_math_isnan(pixel))
     {
     return static_cast<T>(newValues[0]);
@@ -112,7 +115,7 @@ template<typename T> T ChangeNoData(const T & pixel, const
 /**
  * Specialization of IsNoData function to handle itk::VariableLengthVector
  */
-template <typename T> bool IsNoData(const itk::VariableLengthVector<T> & pixel, const std::vector<bool> & flags, const std::vector<double> & values, bool nanIsNoData = false)
+template <typename T> bool OTBMetadata_EXPORT IsNoData(const itk::VariableLengthVector<T> & pixel, const std::vector<bool> & flags, const std::vector<double> & values, bool nanIsNoData = false)
 {
   assert(flags.size()>=pixel.Size());
   assert(values.size()>=pixel.Size());
@@ -131,7 +134,8 @@ template <typename T> bool IsNoData(const itk::VariableLengthVector<T> & pixel,
 /**
  * Specialization of ChangeNoData function to handle itk::VariableLengthVector
  */
-template <typename T> itk::VariableLengthVector<T> ChangeNoData(const itk::VariableLengthVector<T> & pixel,
+template <typename T> itk::VariableLengthVector<T>
+OTBMetadata_EXPORT ChangeNoData(const itk::VariableLengthVector<T> & pixel,
                                                                 const std::vector<bool> & flags,
                                                                 const std::vector<double> & values,
                                                                 const std::vector<double> & newValues,
@@ -142,7 +146,7 @@ template <typename T> itk::VariableLengthVector<T> ChangeNoData(const itk::Varia
   assert(newValues.size()>=pixel.Size());
 
   itk::VariableLengthVector<T> outPixel(pixel.Size());
-  
+
   for(unsigned int i = 0; i < pixel.Size();++i)
     {
     if((nanIsNoData && vnl_math_isnan(pixel[i])) || (flags[i] && (pixel[i] == values[i])))
diff --git a/Modules/IO/Carto/include/otbCoordinateToName.h b/Modules/IO/Carto/include/otbCoordinateToName.h
index 952e27cc23bddc014fb7bd092bd5b6aa1974da02..db816e5e52a30d142efb490d2c0152d2d8070e40 100644
--- a/Modules/IO/Carto/include/otbCoordinateToName.h
+++ b/Modules/IO/Carto/include/otbCoordinateToName.h
@@ -21,6 +21,7 @@
 #include "itkPoint.h"
 #include "itkMultiThreader.h"
 #include "otbCurlHelperInterface.h"
+#include "OTBCartoExport.h"
 
 namespace otb
 {
@@ -36,7 +37,7 @@ namespace otb
  * \ingroup OTBCarto
  */
 
-class ITK_EXPORT CoordinateToName : public itk::Object
+class OTBCarto_EXPORT CoordinateToName : public itk::Object
 {
 public:
   /** Standard class typedefs. */
diff --git a/Modules/IO/Carto/include/otbPlaceNameToLonLat.h b/Modules/IO/Carto/include/otbPlaceNameToLonLat.h
index 1587e817eef783dcb24205b952e404083216988a..b36163bd6f06d1970fa57457ddc98f0ecf82f164 100644
--- a/Modules/IO/Carto/include/otbPlaceNameToLonLat.h
+++ b/Modules/IO/Carto/include/otbPlaceNameToLonLat.h
@@ -19,6 +19,7 @@
 #define otbPlaceNameToLonLat_h
 
 #include "otbCurlHelperInterface.h"
+#include "OTBCartoExport.h"
 
 namespace otb
 {
@@ -31,7 +32,7 @@ namespace otb
  * \ingroup OTBCarto
  */
 
-class ITK_EXPORT PlaceNameToLonLat : public itk::Object
+class OTBCarto_EXPORT PlaceNameToLonLat : public itk::Object
 {
 public:
   /** Standard class typedefs. */
diff --git a/Modules/Learning/Supervised/include/otbCvRTreesWrapper.h b/Modules/Learning/Supervised/include/otbCvRTreesWrapper.h
index 3494a4e67061f8592173a34ca4cf3a02ceb3f891..674eb8c042a9bdcb4f2dda44dbe5eabe0d43e371 100644
--- a/Modules/Learning/Supervised/include/otbCvRTreesWrapper.h
+++ b/Modules/Learning/Supervised/include/otbCvRTreesWrapper.h
@@ -29,7 +29,7 @@ namespace otb
  *
  * \ingroup OTBSupervised
  */
-class CV_EXPORTS_W CvRTreesWrapper : public CvRTrees
+class OTBSupervised_EXPORT CvRTreesWrapper : public CvRTrees
 {
 public:
   typedef std::vector<unsigned int> VotesVectorType;
@@ -37,25 +37,25 @@ public:
   ~CvRTreesWrapper() ITK_OVERRIDE;
 
   /** Compute the number of votes for each class. */
-  void get_votes(const cv::Mat& sample, 
+  void get_votes(const cv::Mat& sample,
                  const cv::Mat& missing,
                  VotesVectorType& vote_count) const;
-  
+
   /** Predict the confidence of the classifcation by computing the proportion
       of trees which voted for the majority class.
   */
-  float predict_confidence(const cv::Mat& sample, 
-                           const cv::Mat& missing = 
+  float predict_confidence(const cv::Mat& sample,
+                           const cv::Mat& missing =
                            cv::Mat()) const;
 
-  /** Predict the confidence margin of the classifcation by computing the 
+  /** Predict the confidence margin of the classifcation by computing the
       difference in votes between the first and second most voted classes.
       This measure is preferred to the proportion of votes of the majority
       class, since it provides information about the conflict between the
       most likely classes.
   */
-  float predict_margin(const cv::Mat& sample, 
-                          const cv::Mat& missing = 
+  float predict_margin(const cv::Mat& sample,
+                          const cv::Mat& missing =
                           cv::Mat()) const;
 };
 
diff --git a/Modules/Learning/Supervised/include/otbOpenCVUtils.h b/Modules/Learning/Supervised/include/otbOpenCVUtils.h
index 01ee23f57c734c0b8d44b199c383ac1f992b2ebd..6cb923a42700a9ee709e772c82a6a9b73cf36820 100644
--- a/Modules/Learning/Supervised/include/otbOpenCVUtils.h
+++ b/Modules/Learning/Supervised/include/otbOpenCVUtils.h
@@ -38,7 +38,7 @@
 #include <opencv2/ml/ml.hpp>
 #endif
 
-
+#include "OTBSupervisedExport.h"
 
 #include "itkListSample.h"
 
diff --git a/Modules/Radiometry/Simulation/include/otbLeafParameters.h b/Modules/Radiometry/Simulation/include/otbLeafParameters.h
index 51fb59d85a6c435e29e59186d7ae9b5d6f20df32..b6c2e5f8592885170e9d952913142eea9dcba4cb 100644
--- a/Modules/Radiometry/Simulation/include/otbLeafParameters.h
+++ b/Modules/Radiometry/Simulation/include/otbLeafParameters.h
@@ -22,7 +22,7 @@
 #include "itkDataObject.h"
 #include "itkMacro.h"
 #include "itkObjectFactory.h"
-
+#include "OTBSimulationExport.h"
 
 namespace otb
 {
@@ -34,7 +34,7 @@ namespace otb
  * \ingroup OTBSimulation
  */
 
-class ITK_EXPORT LeafParameters : public itk::DataObject
+class OTBSimulation_EXPORT LeafParameters : public itk::DataObject
 {
    public:
       /** Standard class typedefs */