diff --git a/Modules/IO/ImageIO/include/otbImageFileReader.h b/Modules/IO/ImageIO/include/otbImageFileReader.h
index 59f791f9a2efafe83bbe198f274d14dc1557ddf4..126aa251d81dae3d778904d53d261cb678602a50 100644
--- a/Modules/IO/ImageIO/include/otbImageFileReader.h
+++ b/Modules/IO/ImageIO/include/otbImageFileReader.h
@@ -37,35 +37,12 @@
 #include "otbDefaultConvertPixelTraits.h"
 #include "otbImageKeywordlist.h"
 #include "otbExtendedFilenameToReaderOptions.h"
+#include "otbImageFileReaderException.h"
 #include <string>
 
 namespace otb
 {
 
-/** \class ImageFileReaderException
- *
- * \brief Base exception class for IO conflicts.
- *
- * \ingroup OTBImageIO
- */
-class ImageFileReaderException : public itk::ExceptionObject
-{
-public:
-  /** Run-time information. */
-  itkTypeMacro( ImageFileReaderException, ExceptionObject );
-
-  /** Constructor. */
-  ImageFileReaderException(const char *file, unsigned int line,
-                           const std::string& desc = "",
-                           const std::string& filename = "") :
-    ExceptionObject(file, line, desc),
-    m_Filename(filename)
-  {
-  }
-
-  std::string m_Filename;
-};
-
 /** \class ImageFileReader
  * \brief  Reads image data.
  *
diff --git a/Modules/IO/ImageIO/include/otbImageFileReaderException.h b/Modules/IO/ImageIO/include/otbImageFileReaderException.h
new file mode 100644
index 0000000000000000000000000000000000000000..46e8c55c3fecc2e2df0f8987bfc28eea2817f8f8
--- /dev/null
+++ b/Modules/IO/ImageIO/include/otbImageFileReaderException.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
+ *
+ * This file is part of Orfeo Toolbox
+ *
+ *     https://www.orfeo-toolbox.org/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef otbImageFileReaderException_h
+#define otbImageFileReaderException_h
+
+#include "itkMacro.h"
+#include "OTBImageIOExport.h"
+
+namespace otb
+{
+
+/** \class ImageFileReaderException
+ *
+ * \brief Base exception class for IO conflicts.
+ *
+ * \ingroup OTBImageIO
+ */
+class OTBImageIO_EXPORT ImageFileReaderException : public itk::ExceptionObject
+{
+public:
+  /** Run-time information. */
+  itkTypeMacro( ImageFileReaderException, ExceptionObject );
+
+  /** Constructor. */
+  ImageFileReaderException(const char *file, unsigned int line,
+                           const std::string& desc = "",
+                           const std::string& filename = "");
+
+  /** Destructor. */
+  ~ImageFileReaderException();
+
+  std::string m_Filename;
+};
+}
+
+#endif
diff --git a/Modules/IO/ImageIO/src/otbImageFileReaderException.cxx b/Modules/IO/ImageIO/src/otbImageFileReaderException.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b4961600a40535097eae296ee53541719513c1df
--- /dev/null
+++ b/Modules/IO/ImageIO/src/otbImageFileReaderException.cxx
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2005-2017 Centre National d'Etudes Spatiales (CNES)
+ *
+ * This file is part of Orfeo Toolbox
+ *
+ *     https://www.orfeo-toolbox.org/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "otbImageFileReaderException.h"
+
+namespace otb {
+
+ImageFileReaderException::ImageFileReaderException(const char *file, unsigned int line,
+                                                   const std::string& desc,
+                                                   const std::string& filename) :
+    ExceptionObject(file, line, desc),
+    m_Filename(filename)
+{
+}
+
+ImageFileReaderException::~ImageFileReaderException()
+{
+}
+}