[Insight-users] I'm New... linking issue under MS Visual Studio 8. Am using CMake

Dan Mueller dan.muel at gmail.com
Sun Jun 7 00:25:02 EDT 2009


Hi Perry,

    Welcome to ITK!

Firstly, thank you for your clear description of your problem.

It seems you are missing some libraries required for the linking. Try replacing
    TARGET_LINK_LIBRARIES(ConnectedThresholdImageFilter ITKCommon)
with
    TARGET_LINK_LIBRARIES(ConnectedThresholdImageFilter ITKCommon
ITKIO ITKNumerics)

This is how the example ConnectedThresholdImageFilter is linked in
    Examples/Segmentation/CMakeLists.txt

Pleas let us know if this works for you.

Cheers, Dan


2009/6/7  <phorwich at bidmc.harvard.edu>:
> Hi All,
>
>
>
> This is another 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
>
>
>
>
>
> _____________________________________
> 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