[Insight-users] Linking Visual Studio 2008 + CMake + ConnectedThresholdImageFilter

C.Cagatay Bilgin bilgic at cs.rpi.edu
Sat Jun 6 19:15:47 EDT 2009


try adding ITKIO in your CMakeLists.txt file.

>   TARGET_LINK_LIBRARIES(ConnectedThresholdImageFilter ITKCommon)

vs
>
>   TARGET_LINK_LIBRARIES(ConnectedThresholdImageFilter ITKCommon ITKIO)

Regards,
Cagatay Bilgin


On Jun 6, 2009, at 7:01 PM, Perry Horwich wrote:

>
> Hi All,
>
> Apologies if this posts to ITK-Users twice.
>
> This is a post about trouble linking.  My current state of affairs is:
>
> 	Downloaded and built ITK with CMake.
> 	Built ITK_BIN successfully with MS Visual Studio 2008 under Win XP
> 	Made a new project 'Hello World' and copy/pasted the code from the
> examples directory
> 	HelloWorld built and executed successfully
>
> 	Did something similar with 'DicomSeriesReadImageWrite2' and  
> everything
> worked well.
>
> 	Made a new project 'ConnectedThresholdImageFilter'
> 	copy/pasted code from the examples directory
> 	modified CMakeList.txt so it looks like:
>
>   # This is the root ITK CMakeLists file.
>   CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
>   IF(COMMAND CMAKE_POLICY)
>     CMAKE_POLICY(SET CMP0003 NEW)
>   ENDIF(COMMAND CMAKE_POLICY)
>
>
>   # This project is designed to be built outside the Insight source  
> tree.
>   PROJECT(ConnectedThresholdImageFilter)
>
>   # Find ITK.
>   FIND_PACKAGE(ITK REQUIRED)
>   INCLUDE(${ITK_USE_FILE})
>
>   ADD_EXECUTABLE(ConnectedThresholdImageFilter
> ConnectedThresholdImageFilter.cxx )
>
>   TARGET_LINK_LIBRARIES(ConnectedThresholdImageFilter ITKCommon)
>
> 	Run CMake
> 	Build ConnectedThresholdImageFilter project
> 	Code compiles, no errors
> 	When it comes time to link, I get 17 errors that look like:
> ------ Build started: Project: ConnectedThresholdImageFilter,  
> Configuration:
> Debug Win32 ------
> Compiling...
> ConnectedThresholdImageFilter.cxx
> Linking...
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: static class itk::SmartPointer<class itk::ImageIOBase>
> __cdecl itk::ImageIOFactory::CreateImageIO(char const *,enum
> itk::ImageIOFactory::FileModeType)"
> (?CreateImageIO at ImageIOFactory@itk@@SA?AV? 
> $SmartPointer at VImageIOBase@itk@@@2 at PBDW4FileModeType@12@@Z)
> referenced in function
> __catch$?GenerateOutputInformation@?$ImageFileReader at V?$Image at M 
> $01 at itk@@V?$DefaultConvertPixelTraits at M@2@@itk@@UAEXXZ$0
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: virtual __thiscall  
> itk::ImageIORegion::~ImageIORegion(void)"
> (??1ImageIORegion at itk@@UAE at XZ) referenced in function "public:  
> virtual void
> __thiscall itk::ImageFileReader<class itk::Image<float,2>,class
> itk::DefaultConvertPixelTraits<float>  
> >::EnlargeOutputRequestedRegion(class
> itk::DataObject *)"
> (?EnlargeOutputRequestedRegion@?$ImageFileReader at V?$Image at M 
> $01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@UAEXPAVDataObject at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: __thiscall  
> itk::ImageIORegion::ImageIORegion(unsigned int)"
> (??0ImageIORegion at itk@@QAE at I@Z) referenced in function "public:  
> virtual void
> __thiscall itk::ImageFileReader<class itk::Image<float,2>,class
> itk::DefaultConvertPixelTraits<float>  
> >::EnlargeOutputRequestedRegion(class
> itk::DataObject *)"
> (?EnlargeOutputRequestedRegion@?$ImageFileReader at V?$Image at M 
> $01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@UAEXPAVDataObject at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: long __thiscall
> itk::ImageIOBase::GetImageSizeInBytes(void)const "
> (?GetImageSizeInBytes at ImageIOBase@itk@@QBEJXZ) referenced in function
> __catch$?GenerateData@?$ImageFileReader at V?$Image at M$01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@MAEXXZ$0
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: __thiscall itk::ImageIORegion::ImageIORegion(class
> itk::ImageIORegion const &)" (??0ImageIORegion at itk@@QAE at ABV01@@Z)  
> referenced
> in function
> __catch$?GenerateData@?$ImageFileReader at V?$Image at M$01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@MAEXXZ$0
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "class std::basic_ostream<char,struct std::char_traits<char>  
> > &
> __cdecl itk::operator<<(class std::basic_ostream<char,struct
> std::char_traits<char> > &,class itk::ImageIORegion const &)"
> (??6itk@@YAAAV?$basic_ostream at DU? 
> $char_traits at D@std@@@std@@AAV12 at ABVImageIORegion@0@@Z)
> referenced in function
> __catch$?GenerateData@?$ImageFileReader at V?$Image at M$01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@MAEXXZ$0
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: bool __thiscall itk::ImageIORegion::IsInside(class
> itk::ImageIORegion const &)const "
> (?IsInside at ImageIORegion@itk@@QBE_NABV12@@Z) referenced in function  
> "public:
> virtual void __thiscall itk::ImageFileWriter<class itk::Image<unsigned
> char,2> >::Write(void)"
> (?Write@?$ImageFileWriter at V?$Image at E$01 at itk@@@itk@@UAEXXZ)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: void __thiscall itk::ImageIORegion::operator=(class
> itk::ImageIORegion const &)" (??4ImageIORegion at itk@@QAEXABV01@@Z)  
> referenced
> in function "public: virtual void __thiscall  
> itk::ImageFileWriter<class
> itk::Image<unsigned char,2> >::Write(void)"
> (?Write@?$ImageFileWriter at V?$Image at E$01 at itk@@@itk@@UAEXXZ)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: __thiscall itk::ImageIORegion::ImageIORegion(void)"
> (??0ImageIORegion at itk@@QAE at XZ) referenced in function "public:  
> virtual void
> __thiscall itk::ImageFileWriter<class itk::Image<unsigned char,2>
>> ::Write(void)" (?Write@?$ImageFileWriter at V?$Image at E 
>> $01 at itk@@@itk@@UAEXXZ)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: void __thiscall
> itk::ImageIOBase::SetNumberOfDimensions(unsigned int)"
> (?SetNumberOfDimensions at ImageIOBase@itk@@QAEXI at Z) referenced in  
> function
> "public: virtual void __thiscall itk::ImageFileWriter<class
> itk::Image<unsigned char,2> >::Write(void)"
> (?Write@?$ImageFileWriter at V?$Image at E$01 at itk@@@itk@@UAEXXZ)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: void __thiscall itk::ImageIORegion::SetIndex(unsigned
> long,long)" (?SetIndex at ImageIORegion@itk@@QAEXKJ at Z) referenced in  
> function
> "public: static void __cdecl  
> itk::ImageIORegionAdaptor<2>::Convert(class
> itk::ImageRegion<2> const &,class itk::ImageIORegion &,class  
> itk::Index<2>
> const &)"
> (?Convert@?$ImageIORegionAdaptor@$01 at itk@@SAXABV?$ImageRegion@ 
> $01 at 2@AAVImageIORegion at 2@ABV?$Index@$01 at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: void __thiscall itk::ImageIORegion::SetSize(unsigned
> long,unsigned long)" (?SetSize at ImageIORegion@itk@@QAEXKK at Z)  
> referenced in
> function "public: static void __cdecl
> itk::ImageIORegionAdaptor<2>::Convert(class itk::ImageRegion<2> const
> &,class itk::ImageIORegion &,class itk::Index<2> const &)"
> (?Convert@?$ImageIORegionAdaptor@$01 at itk@@SAXABV?$ImageRegion@ 
> $01 at 2@AAVImageIORegion at 2@ABV?$Index@$01 at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: unsigned int __thiscall
> itk::ImageIORegion::GetImageDimension(void)const "
> (?GetImageDimension at ImageIORegion@itk@@QBEIXZ) referenced in function
> "public: static void __cdecl  
> itk::ImageIORegionAdaptor<2>::Convert(class
> itk::ImageRegion<2> const &,class itk::ImageIORegion &,class  
> itk::Index<2>
> const &)"
> (?Convert@?$ImageIORegionAdaptor@$01 at itk@@SAXABV?$ImageRegion@ 
> $01 at 2@AAVImageIORegion at 2@ABV?$Index@$01 at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: long __thiscall itk::ImageIORegion::GetIndex(unsigned
> long)const " (?GetIndex at ImageIORegion@itk@@QBEJK at Z) referenced in  
> function
> "public: static void __cdecl  
> itk::ImageIORegionAdaptor<2>::Convert(class
> itk::ImageIORegion const &,class itk::ImageRegion<2> &,class  
> itk::Index<2>
> const &)"
> (?Convert@?$ImageIORegionAdaptor@$01 at itk@@SAXABVImageIORegion at 2@AAV? 
> $ImageRegion@$01 at 2@ABV?$Index@$01 at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: unsigned long __thiscall
> itk::ImageIORegion::GetSize(unsigned long)const "
> (?GetSize at ImageIORegion@itk@@QBEKK at Z) referenced in function  
> "public: static
> void __cdecl itk::ImageIORegionAdaptor<2>::Convert(class  
> itk::ImageIORegion
> const &,class itk::ImageRegion<2> &,class itk::Index<2> const &)"
> (?Convert@?$ImageIORegionAdaptor@$01 at itk@@SAXABVImageIORegion at 2@AAV? 
> $ImageRegion@$01 at 2@ABV?$Index@$01 at 2@@Z)
> ConnectedThresholdImageFilter.obj : error LNK2019: unresolved external
> symbol "public: class std::basic_string<char,struct
> std::char_traits<char>,class std::allocator<char> > __thiscall
> itk::ImageIOBase::GetComponentTypeAsString(enum
> itk::ImageIOBase::IOComponentType)const "
> (?GetComponentTypeAsString at ImageIOBase@itk@@QBE?AV?$basic_string at DU? 
> $char_traits at D@std@@V?$allocator at D@2@@std@@W4IOComponentType at 12@@Z)
> referenced in function "protected: void __thiscall
> itk::ImageFileReader<class itk::Image<float,2>,class
> itk::DefaultConvertPixelTraits<float> >::DoConvertBuffer(void  
> *,unsigned
> long)"
> (?DoConvertBuffer@?$ImageFileReader at V?$Image at M$01 at itk@@V? 
> $DefaultConvertPixelTraits at M@2@@itk@@IAEXPAXK at Z)
> C:\itkproj\connThreshImgFilter\connThreshImgFilterBin\Debug 
> \ConnectedThresholdImageFilter.exe
> : fatal error LNK1120: 16 unresolved externals
> Build log was saved at
> "file://c:\itkproj\connThreshImgFilter\connThreshImgFilterBin 
> \ConnectedThresholdImageFilter.dir\Debug\BuildLog.htm"
> ConnectedThresholdImageFilter - 17 error(s), 0 warning(s)
> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped  
> ===========
>
> Alas....  After a couple of hours of trying various methods of  
> pointing the
> linker in the right direction, I seem to have hit a wall.  Is it  
> possible
> this example code uses classes that are not part of the distribution  
> code? I
> can't even be sure which line of code is generating the tag that  
> fails to
> link.  My main interest in ITK is image segmentation, so I'm hoping  
> someone
> can help me get over this early hurdle.
>
> Many thanks in advance-
>
> Perry
>
>
>
>
>
> -- 
> View this message in context: http://www.nabble.com/Linking-Visual-Studio-2008-%2B-CMake-%2B-ConnectedThresholdImageFilter-tp23906411p23906411.html
> Sent from the ITK - Users mailing list archive at Nabble.com.
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users



More information about the Insight-users mailing list