<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7655.8">
<TITLE>Problem with ITK and GDCM in the same program</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Hi everyone, I have a problem: I have created this programthat use both ITK and GDCM libraries:<BR>
// GDCM Libraries<BR>
#include &quot;gdcmReader.h&quot;<BR>
(...)<BR>
// ITK Libraries<BR>
#include &quot;itkImage.h&quot;<BR>
(...)<BR>
// Standard Libraries<BR>
#include &lt;string&gt;<BR>
(...)<BR>
// Type definitions<BR>
const unsigned int Dimension = 2;<BR>
typedef unsigned char PixelType;<BR>
typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<BR>
typedef itk::ImageFileReader&lt; ImageType &gt; ReaderType;<BR>
typedef itk::ImageFileWriter&lt; ImageType &gt; WriterType;<BR>
typedef itk::GDCMImageIO ImageIOType;<BR>
typedef itk::Image&lt; float, Dimension &gt; OutputImageType;<BR>
typedef itk::SobelEdgeDetectionImageFilter&lt; OutputImageType, OutputImageType &gt; SobelFilterType;<BR>
typedef itk::RegionOfInterestImageFilter&lt; ImageType, ImageType &gt; RegionFilterType;<BR>
typedef itk::CastImageFilter&lt; ImageType, OutputImageType&gt; CastToRealFilterType;<BR>
typedef itk::RescaleIntensityImageFilter&lt; OutputImageType, ImageType &gt; RescaleFilter;&nbsp;&nbsp;<BR>
// Functions<BR>
template &lt;typename TPrinter&gt; bool Region(const std::string &amp; filename, unsigned int* X_min, unsigned int* Y_min, unsigned int* X_max, unsigned int* Y_max );<BR>
int main (int argc, char *argv[])<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( argc &lt; 2 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; argv[0] &lt;&lt; &quot; inputImageFile&nbsp; outputImageFile &quot; &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string filename = argv[1];<BR>
<BR>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIOType::Pointer dicomIO = ImageIOType::New();<BR>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReaderType::Pointer reader = ReaderType::New();<BR>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;SetFileName( argv[1] );<BR>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;SetImageIO( dicomIO );<BR>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;Update();<BR>
<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int x_min = 1;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int y_min = 1;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int x_max = 1;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int y_max = 1;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( Region&lt;gdcm::Printer&gt;( filename, &amp;x_min, &amp;y_min, &amp;x_max, &amp;y_max ) )<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;x_min = &quot; &lt;&lt; x_min &lt;&lt; std::endl;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;y_min = &quot; &lt;&lt; y_min &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;x_max = &quot; &lt;&lt; x_max &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;y_max = &quot; &lt;&lt; y_max &lt;&lt; std::endl;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;no\n&quot;;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Return<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_SUCCESS;<BR>
}<BR>
<BR>
template &lt;typename TPrinter&gt; bool Region(const std::string &amp; filename, unsigned int* X_min, unsigned int* Y_min, unsigned int* X_max, unsigned int* Y_max )<BR>
{<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gdcm::Reader reader;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.SetFileName( filename.c_str() );<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool success = reader.Read();<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( !success )<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;Failed to read: &quot; &lt;&lt; filename &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false;<BR>
&nbsp;&nbsp;&nbsp; }<BR>
<BR>
// Replace the stream buffer used by 'std::cout' with a suitable other<BR>
// stream buffer.<BR>
// Direct 'std::cout' to not print to the screen but also write to a file.<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::streambuf* cout_sbuf = std::cout.rdbuf(); // save original sbuf<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::ofstream&nbsp;&nbsp; fout( &quot;header_dicom.txt&quot; );<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout.rdbuf( fout.rdbuf() ); // redirect 'cout' to a 'fout'&nbsp;&nbsp;<BR>
<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TPrinter printer;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printer.SetFile ( reader.GetFile() );<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printer.Print( std::cout );<BR>
<BR>
// Restoring the original stream buffer is necessary because the stream<BR>
// buffer to which 'std::cout' was redirected is destroyed at the end of<BR>
// 'main()'.<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout.rdbuf( cout_sbuf ); // restore the original stream buffer<BR>
<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string str, str_prec;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::fstream f_input;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool findX0 = false;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool findX1 = false;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool findY0 = false;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool findY1 = false;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input.open ( &quot;header_dicom.txt&quot;, std::ios::in );<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( f_input.fail() )<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; &quot;ERROR: can not open file!\n&quot;;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove ( &quot;header_dicom.txt&quot; );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( f_input &gt;&gt; str )<BR>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( str.compare(&quot;(0018,6018)&quot;) == 0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_prec = str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input &gt;&gt; str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while ( str.compare(&quot;#&quot;) != 0 );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *X_min = atoi(str_prec.c_str());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; findX0 = true;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //std::cout &lt;&lt; *X_min &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( str.compare(&quot;(0018,601a)&quot;) == 0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_prec = str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input &gt;&gt; str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while ( str.compare(&quot;#&quot;) != 0 );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *Y_min = atoi(str_prec.c_str());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; findY0 = true;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //std::cout &lt;&lt; *Y_min &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( str.compare(&quot;(0018,601c)&quot;) == 0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_prec = str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input &gt;&gt; str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while ( str.compare(&quot;#&quot;) != 0 );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *X_max = atoi(str_prec.c_str());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; findX1 = true;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //std::cout &lt;&lt; *X_max &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( str.compare(&quot;(0018,601e)&quot;) == 0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_prec = str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input &gt;&gt; str;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } while ( str.compare(&quot;#&quot;) != 0 );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *Y_max = atoi(str_prec.c_str());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; findY1 = true;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //std::cout &lt;&lt; *Y_max &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //std::cout &lt;&lt; str &lt;&lt; std::endl;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( ( !findX0 ) || ( !findY0 ) || ( !findX1 ) || ( !findY1 ) )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove ( &quot;header_dicom.txt&quot; );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f_input.close();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remove ( &quot;header_dicom.txt&quot; );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<BR>
}<BR>
<BR>
when i run it without the comments on this lines (49-53):<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIOType::Pointer dicomIO = ImageIOType::New();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReaderType::Pointer reader = ReaderType::New();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;SetFileName( argv[1] );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;SetImageIO( dicomIO );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;Update();<BR>
<BR>
the output is:<BR>
<BR>
edoardo@edoardo-laptop:~/ITK/Tesi/01_Autocrop/crop/bin$ make<BR>
Scanning dependencies of target cropping<BR>
[100%] Building CXX object CMakeFiles/cropping.dir/cropping.cxx.o<BR>
Linking CXX executable cropping<BR>
/usr/local/lib/InsightToolkit/libitkgdcm.a(gdcmGlobal.o): In function `gdcm::Global::Global()':<BR>
gdcmGlobal.cxx:(.text+0x0): multiple definition of `gdcm::Global::Global()'<BR>
/usr/local/lib/libgdcmDICT.a(gdcmGlobal.cxx.o):gdcmGlobal.cxx:(.text+0x0): first defined here<BR>
/usr/local/lib/InsightToolkit/libitkgdcm.a(gdcmGlobal.o): In function `gdcm::Global::Global()':<BR>
gdcmGlobal.cxx:(.text+0x300): multiple definition of `gdcm::Global::Global()'<BR>
/usr/local/lib/libgdcmDICT.a(gdcmGlobal.cxx.o):gdcmGlobal.cxx:(.text+0x80): first defined here<BR>
/usr/local/lib/InsightToolkit/libitkgdcm.a(gdcmGlobal.o): In function `gdcm::Global::~Global()':<BR>
gdcmGlobal.cxx:(.text+0x600): multiple definition of `gdcm::Global::~Global()'<BR>
/usr/local/lib/libgdcmDICT.a(gdcmGlobal.cxx.o):gdcmGlobal.cxx:(.text+0x100): first defined here<BR>
/usr/local/lib/InsightToolkit/libitkgdcm.a(gdcmGlobal.o): In function `gdcm::Global::~Global()':<BR>
gdcmGlobal.cxx:(.text+0x694): multiple definition of `gdcm::Global::~Global()'<BR>
/usr/local/lib/libgdcmDICT.a(gdcmGlobal.cxx.o):gdcmGlobal.cxx:(.text+0x14c): first defined here<BR>
collect2: ld returned 1 exit status<BR>
make[2]: *** [cropping] Errore 1<BR>
make[1]: *** [CMakeFiles/cropping.dir/all] Errore 2<BR>
make: *** [all] Errore 2<BR>
<BR>
instead of if these lines are commented I don't have any error; but my problem is that I want to use also ITK libraries into my project.<BR>
<BR>
my CMakeList.txt:<BR>
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)<BR>
<BR>
PROJECT(ImageIO)<BR>
<BR>
# Find ITK.<BR>
FIND_PACKAGE(ITK)<BR>
IF(NOT ITK_DIR)<BR>
&nbsp; MESSAGE(FATAL_ERROR &quot;Please set ITK_DIR.&quot;)<BR>
ENDIF(NOT ITK_DIR)<BR>
INCLUDE(${ITK_USE_FILE})<BR>
<BR>
# Find GDCM<BR>
FIND_PACKAGE(GDCM)<BR>
&nbsp; IF(GDCM_FOUND)<BR>
&nbsp;&nbsp;&nbsp; INCLUDE(${GDCM_USE_FILE})<BR>
&nbsp;&nbsp;&nbsp; IF( &quot;${GDCM_MAJOR_VERSION}&quot; LESS 2.0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET(MITK_GDCM_LIBRARIES gdcm)<BR>
&nbsp;&nbsp;&nbsp; ELSE( &quot;${GDCM_MAJOR_VERSION}&quot; LESS 2.0 )<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET(MITK_GDCM_LIBRARIES gdcmMSFF)<BR>
&nbsp;&nbsp;&nbsp; ENDIF( &quot;${GDCM_MAJOR_VERSION}&quot; LESS 2.0 )<BR>
&nbsp; ELSE(GDCM_FOUND)<BR>
&nbsp;&nbsp;&nbsp; MESSAGE(FATAL_ERROR &quot;Must set GDCM_DIR for MITK_USE_SYSTEM_GDCM.&quot;)<BR>
&nbsp; ENDIF(GDCM_FOUND)<BR>
<BR>
ADD_EXECUTABLE(cropping cropping.cxx )<BR>
TARGET_LINK_LIBRARIES(cropping gdcmMSFF ITKCommon ITKIO)<BR>
<BR>
and my ITK_USE_SYSTEM_GDCM is ON<BR>
and my GDCM_USE_ITK is OFF<BR>
<BR>
Please I need help, I very don't know which is the problem.<BR>
<BR>
Thank you very much for your interest<BR>
Best regards<BR>
Edoardo<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>