diff --git a/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.h b/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.h
index 154c1ba7d615391867cfeab790e713d4489388e1..d4790c5824bd6aa39dd5dd8d44007ca5ed49beb2 100644
--- a/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.h
+++ b/Code/BasicFilters/otbBinaryImageMinimalBoundingRegionCalculator.h
@@ -36,7 +36,7 @@ namespace otb
  * \sa ImageToImageRCC8Calculator
  */
 template <class TInputImage>
-class BinaryImageMinimalBoundingRegionCalculator
+class ITK_EXPORT BinaryImageMinimalBoundingRegionCalculator
   : public itk::ImageToImageFilter<TInputImage,TInputImage>
 {
 public:
diff --git a/Code/BasicFilters/otbClosingOpeningMorphologicalFilter.txx b/Code/BasicFilters/otbClosingOpeningMorphologicalFilter.txx
index 3378eb4e584f9944343d52037d1d38c871c40d01..afee7d132e4b3fb7eeea5b278503ffc91d0048a0 100644
--- a/Code/BasicFilters/otbClosingOpeningMorphologicalFilter.txx
+++ b/Code/BasicFilters/otbClosingOpeningMorphologicalFilter.txx
@@ -31,35 +31,10 @@ namespace otb {
 template <class TInputImage,class TOuputImage, class TKernel>
 ClosingOpeningMorphologicalFilter<TInputImage, TOuputImage, TKernel>
 ::ClosingOpeningMorphologicalFilter()
-  : m_Kernel()
-{}
-
-
-
-// /// Méthode standard pour la gestion du pipeline d'exécution
-// template <class TInputImage,class TOuputImage, class TKernel>
-// void
-// ClosingOpeningMorphologicalFilter<TInputImage, TOuputImage, TKernel>
-// ::GenerateInputRequestedRegion()
-// {
-//   // Appel à l'implémentation de la classe supérieur
-//   Superclass::GenerateInputRequestedRegion();
-//   // Réccupération de l'image en entrée
-//   InputImagePointer input = const_cast<InputImageType *>(this->GetInput());
-//   input->SetRequestedRegion( input->GetLargestPossibleRegion());
-// }
-// /// Méthode standard pour la gestion du pipeline d'exécution
-// template <class TInputImage,class TOuputImage, class TKernel>
-// void
-// ClosingOpeningMorphologicalFilter<TInputImage, TOuputImage, TKernel>
-// ::EnlargeOutputRequestedRegion(itk::DataObject *)
-// {
-//   this->GetOutput()->SetRequestedRegion( this->GetOutput()->GetLargestPossibleRegion());
-// }
-
-
-
-
+{
+m_Kernel.SetRadius(1);
+m_Kernel.CreateStructuringElement();
+}
 /**
  * Main computation method
  */
diff --git a/Code/BasicFilters/otbOpeningClosingMorphologicalFilter.txx b/Code/BasicFilters/otbOpeningClosingMorphologicalFilter.txx
index 2b315ea158ca99db0fe3ff1aacd0fcf24e818ce1..e02bac07345adf35ac1a106a80455f30212c2bec 100644
--- a/Code/BasicFilters/otbOpeningClosingMorphologicalFilter.txx
+++ b/Code/BasicFilters/otbOpeningClosingMorphologicalFilter.txx
@@ -31,8 +31,10 @@ namespace otb {
 template <class TInputImage,class TOuputImage, class TKernel>
 OpeningClosingMorphologicalFilter<TInputImage, TOuputImage, TKernel>
 ::OpeningClosingMorphologicalFilter()
-  : m_Kernel()
-{}
+{
+	m_Kernel.SetRadius(1);
+	m_Kernel.CreateStructuringElement();
+}
 
 /**
  * Main computation method
diff --git a/Code/Common/otbImageList.h b/Code/Common/otbImageList.h
index e9f009c40dc3f28fc89da984a5d11a63210c2c0e..c8ce133a034ff4cb7930b77dcae2b75cd5cb84b1 100644
--- a/Code/Common/otbImageList.h
+++ b/Code/Common/otbImageList.h
@@ -31,7 +31,7 @@ namespace otb
  */
 
 template <class TImage>
-class ImageList
+class ITK_EXPORT ImageList
   : public ObjectList<TImage>
   {
   public:
diff --git a/Code/Common/otbObjectList.h b/Code/Common/otbObjectList.h
index c977d4d5b0ea52eba760f7f41b7bb1abd1f4b37e..b1105a5ea41682306e9f7d8eee29811506a04426 100644
--- a/Code/Common/otbObjectList.h
+++ b/Code/Common/otbObjectList.h
@@ -31,7 +31,7 @@ namespace otb
  * methods and iterators interfaces.
  */
 template <class TObject>
-class ObjectList
+class ITK_EXPORT ObjectList
   : public itk::DataObject
 {
  public:
diff --git a/Code/MultiScale/otbMorphologicalPyramidAnalyseFilter.h b/Code/MultiScale/otbMorphologicalPyramidAnalyseFilter.h
index 95629971003253681a2a5ca9c08790802dbeeb51..03079d73585063a0b0b5356b1d759c39f9804169 100644
--- a/Code/MultiScale/otbMorphologicalPyramidAnalyseFilter.h
+++ b/Code/MultiScale/otbMorphologicalPyramidAnalyseFilter.h
@@ -47,7 +47,7 @@ namespace otb
  * ClosingOpeningMorphologicalFilter
  */
 template <class TInputImage, class TOutputImage, class TMorphoFilter>
-class MorphologicalPyramidAnalyseFilter
+class ITK_EXPORT MorphologicalPyramidAnalyseFilter
   : public ImageToImageListFilter<TInputImage,TOutputImage>
 {
 public:
diff --git a/Code/MultiScale/otbMorphologicalPyramidMRToMSConverter.h b/Code/MultiScale/otbMorphologicalPyramidMRToMSConverter.h
index 8178bb334410e3332f9f59d92d03e4a3f2172fa0..58c4407235cba041db3ceb819c860bc40dc628dd 100644
--- a/Code/MultiScale/otbMorphologicalPyramidMRToMSConverter.h
+++ b/Code/MultiScale/otbMorphologicalPyramidMRToMSConverter.h
@@ -36,7 +36,7 @@ namespace otb
        * \sa MorphologicalPyramidSynthesisFilter
        */
       template <class TInputImage, class TOutputImage>
-	class  MRToMSConverter
+	class ITK_EXPORT MRToMSConverter
 	: public ImageListToImageListFilter<TInputImage,TOutputImage>
 	{
 	  public :
diff --git a/Code/MultiScale/otbMorphologicalPyramidResampler.h b/Code/MultiScale/otbMorphologicalPyramidResampler.h
index 026f1871a700f66b5bd570012d115c8a0a09d2e8..631c4c0125a0f92070a4bb66996a2943dfe05217 100644
--- a/Code/MultiScale/otbMorphologicalPyramidResampler.h
+++ b/Code/MultiScale/otbMorphologicalPyramidResampler.h
@@ -41,7 +41,7 @@ namespace otb
        * \sa ScaleTransform
        */
       template <class TInputImage, class TOutputImage>
-	class  Resampler
+	class ITK_EXPORT Resampler
 	: public itk::ImageToImageFilter<TInputImage,TOutputImage>
 	{
 	  public :
diff --git a/Code/MultiScale/otbMorphologicalPyramidResampler.txx b/Code/MultiScale/otbMorphologicalPyramidResampler.txx
index b0de89ebd5db73ff8894f5e9a22c396449b2cd9b..3e64836844ec2a2d89cfd59aba38c76b22898e0c 100644
--- a/Code/MultiScale/otbMorphologicalPyramidResampler.txx
+++ b/Code/MultiScale/otbMorphologicalPyramidResampler.txx
@@ -35,7 +35,13 @@ namespace morphologicalPyramid
  */
 template <class TInputImage,class TOuputImage>
 Resampler<TInputImage, TOuputImage>
-::Resampler(){}
+::Resampler()
+{
+  for(int i=0;i<InputImageType::ImageDimension;++i)
+  {
+     m_Size[i]=0;
+  }
+}
   /**
    * Configure input requested region to be the largest possible region.
    */
diff --git a/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.h b/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.h
index 8cb9aec0d60ef3542b1e6a98b43116e0f57d9a69..50ef8df02b4b993724ae7e9a80abf904e9f6527e 100644
--- a/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.h
+++ b/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.h
@@ -53,7 +53,7 @@ namespace otb
  * ClosingOpeningMorphologicalFilter, Segmenter, MRToMSConverter, Resampler
  */
 template <class TInputImage, class TOutputImage>
-class MorphologicalPyramidSegmentationFilter
+class ITK_EXPORT MorphologicalPyramidSegmentationFilter
   : public ImageListToImageListFilter<TInputImage,TOutputImage>
 {
 public:
diff --git a/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.txx b/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.txx
index 30dcfe7bbad8a1f4b96ab35bafadf2f703a85e59..33e0953a652429b833aaba285b780e835f2fc254 100644
--- a/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.txx
+++ b/Code/MultiScale/otbMorphologicalPyramidSegmentationFilter.txx
@@ -34,6 +34,9 @@ MorphologicalPyramidSegmentationFilter<TInputImage,TOutputImage>
 ::MorphologicalPyramidSegmentationFilter() 
 {
   this->SetNumberOfRequiredInputs(3);
+	m_MinimumObjectSize = 10;
+	m_SeedsQuantile = 0.9;
+	m_ConnectedThresholdQuantile = 0.9;
 }
 /**
  * Destructor
diff --git a/Code/MultiScale/otbMorphologicalPyramidSegmenter.h b/Code/MultiScale/otbMorphologicalPyramidSegmenter.h
index 0f8e402ca19b8b9a8f18895f71547e912d9cb180..b1e5cc7511c69a8a5890459ec9d69d9a017d7557 100644
--- a/Code/MultiScale/otbMorphologicalPyramidSegmenter.h
+++ b/Code/MultiScale/otbMorphologicalPyramidSegmenter.h
@@ -43,7 +43,7 @@ namespace otb
        * \sa ScaleTransform
        */
       template <class TInputImage, class TOutputImage>
-	class  Segmenter
+	class ITK_EXPORT Segmenter
 	: public itk::ImageToImageFilter<TInputImage,TOutputImage>
 	{
 	  public :
diff --git a/Code/MultiScale/otbMorphologicalPyramidSegmenter.txx b/Code/MultiScale/otbMorphologicalPyramidSegmenter.txx
index 6756b14aa882b93aa4d38c0af24d940d6eb71101..2546e8ad0c9552285fe205d8976033ba09035080 100644
--- a/Code/MultiScale/otbMorphologicalPyramidSegmenter.txx
+++ b/Code/MultiScale/otbMorphologicalPyramidSegmenter.txx
@@ -44,6 +44,11 @@ Segmenter<TInputImage, TOuputImage>
 ::Segmenter()
 {
   this->SetNumberOfRequiredInputs(2);
+	m_SeedsQuantile = 0.9;
+	m_MinimumObjectSize = 10;
+	m_SegmentDarkDetailsBool = false;
+	m_NumberOfObjects = 0;
+	m_ConnectedThresholdQuantile = 0.9;
 }
 /**
  * Set the details image.
diff --git a/Code/MultiScale/otbMorphologicalPyramidSynthesisFilter.h b/Code/MultiScale/otbMorphologicalPyramidSynthesisFilter.h
index 254f43dce99a2276498c66de00a452ac2ddaf62b..eb5b8320d295bca691ce5b9edd90e2c532d01d00 100644
--- a/Code/MultiScale/otbMorphologicalPyramidSynthesisFilter.h
+++ b/Code/MultiScale/otbMorphologicalPyramidSynthesisFilter.h
@@ -41,7 +41,7 @@ namespace otb
  * \sa MorphologicalPyramidResampler
  */
 template <class TInputImage, class TOutputImage>
-class MorphologicalPyramidSynthesisFilter
+class ITK_EXPORT MorphologicalPyramidSynthesisFilter
   : public ImageToImageListFilter<TInputImage,TOutputImage>
 {
 public:
diff --git a/Code/SpatialReasoning/otbImageListToRCC8GraphFilter.h b/Code/SpatialReasoning/otbImageListToRCC8GraphFilter.h
index cfe1350e0abf49ebcb15f457efd0e5a35fe3ae3c..7523697800f938c5071dc8945acc216bc4d67916 100644
--- a/Code/SpatialReasoning/otbImageListToRCC8GraphFilter.h
+++ b/Code/SpatialReasoning/otbImageListToRCC8GraphFilter.h
@@ -27,7 +27,7 @@ namespace otb
  * produce a RCC8 graph.
  */
 template <class TInputImage, class TOutputGraph>
-class ImageListToRCC8GraphFilter
+class ITK_EXPORT ImageListToRCC8GraphFilter
   : public RCC8GraphSource<TOutputGraph>
 {
 public:
diff --git a/Code/SpatialReasoning/otbImageMultiSegmentationToRCC8GraphFilter.h b/Code/SpatialReasoning/otbImageMultiSegmentationToRCC8GraphFilter.h
index 14d874ca404f727c38521bd36f9fd4b421b9f59e..630789233845ec660a54d27c017fb883bb3d7600 100644
--- a/Code/SpatialReasoning/otbImageMultiSegmentationToRCC8GraphFilter.h
+++ b/Code/SpatialReasoning/otbImageMultiSegmentationToRCC8GraphFilter.h
@@ -28,7 +28,7 @@ namespace otb
  * and build the RCC8 graph of the set of regions it represents.
  */
 template <class TInputImage, class TOutputGraph>
-class ImageMultiSegmentationToRCC8GraphFilter 
+class ITK_EXPORT ImageMultiSegmentationToRCC8GraphFilter 
   : public ImageListToRCC8GraphFilter<TInputImage,TOutputGraph>
 {
 public:
diff --git a/Code/SpatialReasoning/otbImageToImageRCC8Calculator.h b/Code/SpatialReasoning/otbImageToImageRCC8Calculator.h
index 81b8c4d373c6513346ce1122c5450a07da218f67..6a49cd91d7d75f9352c6bbcbbdb0996c5634fe7f 100644
--- a/Code/SpatialReasoning/otbImageToImageRCC8Calculator.h
+++ b/Code/SpatialReasoning/otbImageToImageRCC8Calculator.h
@@ -47,7 +47,7 @@ namespace otb
  * to the smallest set needed to determine the relation.
  */
 template <class TInputImage>            
-  class ImageToImageRCC8Calculator : public itk::ImageToImageFilter<TInputImage,TInputImage>
+  class ITK_EXPORT ImageToImageRCC8Calculator : public itk::ImageToImageFilter<TInputImage,TInputImage>
 {
 public:
   /** Standard class typedefs. */
diff --git a/Code/SpatialReasoning/otbRCC8Edge.h b/Code/SpatialReasoning/otbRCC8Edge.h
index fe5f2a498dfbacabe350272efa3beacd958ba252..e886b6e3648a21ddda066b9756ce3b6121af686a 100644
--- a/Code/SpatialReasoning/otbRCC8Edge.h
+++ b/Code/SpatialReasoning/otbRCC8Edge.h
@@ -29,7 +29,7 @@ namespace otb
  *
  * \sa RCC8Graph, RCC8VertexBase
  */
-class RCC8Edge : public itk::DataObject
+class ITK_EXPORT RCC8Edge : public itk::DataObject
 {
  public:
   /** Standard class typedefs */
diff --git a/Code/SpatialReasoning/otbRCC8EdgeIterator.h b/Code/SpatialReasoning/otbRCC8EdgeIterator.h
index 9ea0f5b50cc1426c26fbb4703e74127fd9dfef50..3a900fa2f9a16508667df93ff52f3eb42c5c7a03 100644
--- a/Code/SpatialReasoning/otbRCC8EdgeIterator.h
+++ b/Code/SpatialReasoning/otbRCC8EdgeIterator.h
@@ -27,7 +27,7 @@ namespace otb
  * \brief Iterates on the graph edges.
  */
 template <class TGraph>
-class RCC8EdgeIterator 
+class ITK_EXPORT RCC8EdgeIterator 
 {
  public:
   /** self typedef */
diff --git a/Code/SpatialReasoning/otbRCC8EdgeIterator.txx b/Code/SpatialReasoning/otbRCC8EdgeIterator.txx
index 486a6a07e97c0f397a21374f81ab5ed85d97101e..3072e74f02f0eb62e69a49b9e398272b9536a322 100644
--- a/Code/SpatialReasoning/otbRCC8EdgeIterator.txx
+++ b/Code/SpatialReasoning/otbRCC8EdgeIterator.txx
@@ -26,7 +26,10 @@ namespace otb
   template <class TGraph>
   RCC8EdgeIterator<TGraph>
   ::RCC8EdgeIterator()
-  {}
+  {
+	m_Graph = GraphType::New();
+	tie(m_Iter,m_End)=edges(*m_Graph->GetGraph());
+	}
   /**
    * Copy operator.
    */
diff --git a/Code/SpatialReasoning/otbRCC8Graph.h b/Code/SpatialReasoning/otbRCC8Graph.h
index f16a7eee8abad0f4896a89fc021d6bf105b36c20..3d38f9b6bc8c455127adb3aa3118bb77d678362d 100644
--- a/Code/SpatialReasoning/otbRCC8Graph.h
+++ b/Code/SpatialReasoning/otbRCC8Graph.h
@@ -45,7 +45,8 @@ namespace otb
  * applications, one should provide a patch for this class including
  * the new functionnalities, for consistency reason.
  */
-template <class TVertex>  class RCC8Graph  :
+template <class TVertex>  
+class ITK_EXPORT RCC8Graph  :
     public itk::DataObject
 {
 public:
diff --git a/Code/SpatialReasoning/otbRCC8GraphFileReader.h b/Code/SpatialReasoning/otbRCC8GraphFileReader.h
index da278082226c32f98fc71c1db9b758519c1ce3b5..eef94a2ae1b9433e39e49d0e73fa8090e4e82df6 100644
--- a/Code/SpatialReasoning/otbRCC8GraphFileReader.h
+++ b/Code/SpatialReasoning/otbRCC8GraphFileReader.h
@@ -26,7 +26,7 @@ namespace otb
 /** \class RCC8GraphFileReaderException
  * \brief Base exception class for IO problems during reading. 
  */ 
-class RCC8GraphFileReaderException 
+class ITK_EXPORT RCC8GraphFileReaderException 
   : public itk::ExceptionObject 
 {
 public:
diff --git a/Code/SpatialReasoning/otbRCC8GraphFileWriter.h b/Code/SpatialReasoning/otbRCC8GraphFileWriter.h
index 8eb234ce1e640390a058ba1c10f366b894439211..b1e3237f91c77b080697863e04bd8c068cd2feab 100644
--- a/Code/SpatialReasoning/otbRCC8GraphFileWriter.h
+++ b/Code/SpatialReasoning/otbRCC8GraphFileWriter.h
@@ -27,7 +27,7 @@ namespace otb
 /** \class RCC8GraphFileWriterException
  * \brief Base exception class for IO problems during writing. 
  */ 
-class RCC8GraphFileWriterException 
+class ITK_EXPORT RCC8GraphFileWriterException 
   : public itk::ExceptionObject 
 {
 public:
@@ -61,7 +61,7 @@ public:
  * \sa RCC8Graph
  */
 template <class TInputGraph> 
-class RCC8GraphFileWriter 
+class ITK_EXPORT RCC8GraphFileWriter 
   : public itk::ProcessObject
 {
 public:
diff --git a/Code/SpatialReasoning/otbRCC8GraphSource.h b/Code/SpatialReasoning/otbRCC8GraphSource.h
index d1c2ec5b8782099c275b6d3d92932c7af1d4b9f6..b1a58bb5d2f1bb82b37b0104343618a433fed583 100644
--- a/Code/SpatialReasoning/otbRCC8GraphSource.h
+++ b/Code/SpatialReasoning/otbRCC8GraphSource.h
@@ -28,7 +28,7 @@ namespace otb
  * \ingroup DataSources
  */
 template <class TOutputGraph>
-class RCC8GraphSource
+class ITK_EXPORT RCC8GraphSource
   : public itk::ProcessObject
 {
 public:
diff --git a/Code/SpatialReasoning/otbRCC8InEdgeIterator.h b/Code/SpatialReasoning/otbRCC8InEdgeIterator.h
index 48583650c9af4a136e4399d3732a6eac933ab665..d6398224f400085646d2efe518425920708836e3 100644
--- a/Code/SpatialReasoning/otbRCC8InEdgeIterator.h
+++ b/Code/SpatialReasoning/otbRCC8InEdgeIterator.h
@@ -27,7 +27,7 @@ namespace otb
  * \brief Iterates on the graph in edges from a vertex.
  */
 template <class TGraph>
-class RCC8InEdgeIterator 
+class ITK_EXPORT RCC8InEdgeIterator 
 {
  public:
   /** self typedef */
diff --git a/Code/SpatialReasoning/otbRCC8InEdgeIterator.txx b/Code/SpatialReasoning/otbRCC8InEdgeIterator.txx
index 8180a704b467f25c933dd804423ba39f6b70716e..c611a7ec4751fd8175ba085e8f415c00e3bdca64 100644
--- a/Code/SpatialReasoning/otbRCC8InEdgeIterator.txx
+++ b/Code/SpatialReasoning/otbRCC8InEdgeIterator.txx
@@ -26,7 +26,10 @@ namespace otb
   template <class TGraph>
   RCC8InEdgeIterator<TGraph>
   ::RCC8InEdgeIterator()
-  {}
+  {
+	m_Graph = GraphType::New();
+	tie(m_Iter,m_End)=in_edges(0,*m_Graph->GetGraph());
+	}
   /**
    * Copy operator.
    */
diff --git a/Code/SpatialReasoning/otbRCC8OutEdgeIterator.h b/Code/SpatialReasoning/otbRCC8OutEdgeIterator.h
index c6df3469c2daf31bf9659a13d602074b9ea589d9..17299fb2bff00e625dee7a2de0d61f3c480bfe9c 100644
--- a/Code/SpatialReasoning/otbRCC8OutEdgeIterator.h
+++ b/Code/SpatialReasoning/otbRCC8OutEdgeIterator.h
@@ -27,7 +27,7 @@ namespace otb
  * \brief Iterates on the graph out edges from a vertex.
  */
 template <class TGraph>
-class RCC8OutEdgeIterator 
+class ITK_EXPORT RCC8OutEdgeIterator 
 {
  public:
   /** self typedef */
diff --git a/Code/SpatialReasoning/otbRCC8OutEdgeIterator.txx b/Code/SpatialReasoning/otbRCC8OutEdgeIterator.txx
index 576b5c6a5bdd1315f4ab0b12278dd12f3e18bfb2..abb7e8830fc5ce4903b0cfd8c78fa1d28727b77b 100644
--- a/Code/SpatialReasoning/otbRCC8OutEdgeIterator.txx
+++ b/Code/SpatialReasoning/otbRCC8OutEdgeIterator.txx
@@ -26,7 +26,10 @@ namespace otb
   template <class TGraph>
   RCC8OutEdgeIterator<TGraph>
   ::RCC8OutEdgeIterator()
-  {}
+  {
+	m_Graph = GraphType::New();
+	tie(m_Iter,m_End)=out_edges(0,*m_Graph->GetGraph());
+	}
   /**
    * Copy operator.
    */
diff --git a/Code/SpatialReasoning/otbRCC8VertexBase.h b/Code/SpatialReasoning/otbRCC8VertexBase.h
index 0c996fa620431cf18d215a56d43c7ae62a96c48d..42a7abe76375d8d88935513bbceb32cfd694eb99 100644
--- a/Code/SpatialReasoning/otbRCC8VertexBase.h
+++ b/Code/SpatialReasoning/otbRCC8VertexBase.h
@@ -32,7 +32,8 @@ namespace otb
  * \sa RCC8Graph, RCC8Edge
  */
 template <class TLabel>
-class RCC8VertexBase : public itk::DataObject
+class ITK_EXPORT RCC8VertexBase 
+: public itk::DataObject
 {
  public:
   /** Standard class typedefs */
diff --git a/Code/SpatialReasoning/otbRCC8VertexIterator.h b/Code/SpatialReasoning/otbRCC8VertexIterator.h
index 7c899c5465cadef21b46867901f9a9e669a97f2e..cc461e0c643c0fd412d36406aee3845a04cb3314 100644
--- a/Code/SpatialReasoning/otbRCC8VertexIterator.h
+++ b/Code/SpatialReasoning/otbRCC8VertexIterator.h
@@ -27,7 +27,7 @@ namespace otb
  * \brief Iterates on the graph vertices
  */
 template <class TGraph>
-class RCC8VertexIterator 
+class ITK_EXPORT RCC8VertexIterator 
 {
  public:
   /** self typedef */
diff --git a/Code/SpatialReasoning/otbRCC8VertexIterator.txx b/Code/SpatialReasoning/otbRCC8VertexIterator.txx
index 10ea406a40273903a81927e543866010629071d5..da9b604397285c45a8f13c8e4dbb4a3e994357c1 100644
--- a/Code/SpatialReasoning/otbRCC8VertexIterator.txx
+++ b/Code/SpatialReasoning/otbRCC8VertexIterator.txx
@@ -28,7 +28,10 @@ namespace otb
   template <class TGraph>
   RCC8VertexIterator<TGraph>
   ::RCC8VertexIterator()
-  {}
+  {
+		m_Graph = GraphType::New();
+		tie(m_Iter,m_End)= vertices(*(m_Graph->GetGraph()));
+	}
   /**
    * Copy operator.
    */
diff --git a/Code/SpatialReasoning/otbRCC8VertexWithCompacity.h b/Code/SpatialReasoning/otbRCC8VertexWithCompacity.h
index 167afc62a89a7960881bda2959db91331e88a1a7..23f123890d968e0c941195a905c5cfb4b1bf0944 100644
--- a/Code/SpatialReasoning/otbRCC8VertexWithCompacity.h
+++ b/Code/SpatialReasoning/otbRCC8VertexWithCompacity.h
@@ -30,7 +30,8 @@ namespace otb
    * \sa RCC8Graph, RCC8Edge, RCC8VertexBase
    */
   template <class TLabel, class TPrecision = float>
-    class RCC8VertexWithCompacity : public RCC8VertexBase<TLabel>
+    class ITK_EXPORT RCC8VertexWithCompacity 
+		: public RCC8VertexBase<TLabel>
     {
       public:
       /** Standard class typedefs */