[Insight-developers] Re: [Insight-users] Fixing bugs for ITK with MinGW

Luis Ibanez luis.ibanez at kitware.com
Wed Sep 5 07:40:41 EDT 2007


Well,

It turns out that the symbol template class

      itk::SmartPointerForwardReference<>

is actually already defined and exported in the file

    itkSmartPointerForwardReferenceProcessObject.cxx


but the CMakeLists.txt file only adds it to the list of
source files if "WIN32" is defined.

Yesterday, I tried modifying the CMake logic to include 
itkSmartPointerForwardReferenceProcessObject.cxx in the
ITKCommon library when we build on MinGW:

http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/CMakeLists.txt.diff?cvsroot=Insight&r1=1.123&r2=1.124


Lines 90-94:


    ELSE (WIN32)
      IF(MINGW)
        SET(ITKCommon_SRCS ${ITKCommon_SRCS}
           itkSmartPointerForwardReferenceProcessObject.cxx)
      ENDIF(MINGW)
    ENDIF (WIN32)



However I'm not sure if this is the appropriate logic...


Ali:   Could you please update your CVS checkout of ITK
        and give it a try ?

   You may want to add a MESSAGE() in the middle of the
   IF(MINGW) to make sure that CMake is actually visiting
   that line.


   Please let us know if this change works for you,


      Thanks



          Luis



-----------------
Ali - wrote:
> 
>  >
>  > The export syntax in Luis's patch was incorrect. Try this instead:
>  >
>  > template class ITKCommon_EXPORT
>  > itk::SmartPointerForwardReference<itk::ProcessObject>;
>  >
>  > -Brad
>  >
> 
> 
> Of course. This links the shared library, however, now the same old 
> problem is back again: the tests fail (see the end of this message). How 
> come this does not happen to visual studio?
> 
> 
> Linking CXX executable ../../bin/itkTestDriver.exe
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x12c7): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator 
> itk::ProcessObject*() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x12f3): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x132f): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x1371): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator->() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x13a3): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk15ImageFileWriterINS_5ImageIhLj2EEEE5WriteEv[itk::ImageFileWriter<itk::Image<unsigned 
> char, 2u> >::Write()]+0x13df): undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0x64): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator 
> itk::ProcessObject*() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0x81): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0xab): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0xde): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator->() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0x119): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj2EE23UpdateOutputInformationEv[itk::ImageBase<2u>::UpdateOutputInformation()]+0x143): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0x64): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator 
> itk::ProcessObject*() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0x81): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0xab): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0xde): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::operator->() const'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0x119): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> CMakeFiles/itkTestDriver.dir/itkTestDriver.obj:itkTestDriver.cxx:(.text$_ZN3itk9ImageBaseILj6EE23UpdateOutputInformationEv[itk::ImageBase<6u>::UpdateOutputInformation()]+0x143): 
> undefined reference to 
> `itk::SmartPointerForwardReference<itk::ProcessObject>::~SmartPointerForwardReference()'
> collect2: ld returned 1 exit status
> make[2]: *** [bin/itkTestDriver.exe] Error 1
> make[1]: *** [Code/IO/CMakeFiles/itkTestDriver.dir/all] Error 2
> make: *** [all] Error 2
> 
> 
> ------------------------------------------------------------------------
> Get free emoticon packs and customisation from Windows Live. Pimp My 
> Live! <http://www.pimpmylive.co.uk>


More information about the Insight-developers mailing list