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

Andreas Schuh andreas.schuh.84 at googlemail.com
Sun Jun 7 07:47:13 EDT 2009


Hi Perry,

yes there is some kind of ITK_LINK_ALL. The ITK use file defines the  
CMake variable ITK_LIBRARIES which is set to a list of all ITK  
libraries you can link to. So put just

ADD_LINK_LIBRARIES(MYTARGET ${ITK_LIBRARIES})

in your CMakeList.txt files and you won't ever have to consider which  
ITK libraries you actually need to link with.

--
regards
Andreas

On Jun 7, 2009, at 1:34 PM, Perry Horwich <perryhorwich at gmail.com>  
wrote:

>
> Hi Dan,
>
> Thanks for your reply.
>
> Yes.  Adding ITKIO to the TARGET_LINK_LIBRARIES statement in  
> CMakeLists.txt
> fixed the issue.
>
> Is there someplace I can find a list of valid CMake directives for  
> ITK?
>
> Or, is there someway I could have discovered that ITKIO was the  
> label to add
> to TARGET_LINK_LIBRARIES for the classes I was using?  I wonder if I  
> will
> come across this problem as I explore more of the ITK library.
>
> Or... is there some "ITK_LINK_ALL" label that I could have tried?   
> If so, it
> might be a little slower linking, but would have saved me a lot of  
> time
> otherwise.  This might be an inelegant solution, but it could save  
> others
> some "banging head against table" time.
>
> Best -
>
> Perry
>
>
> Dan Mueller-2 wrote:
>>
>> 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 o 
>>> f 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 i 
>>> t 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 ho 
>>> ping
>>> 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
>>>
>>>
>> _____________________________________
>> 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
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/Re%3A-I%27m-New...-linking-issue-under-MS-Visual-Studio-8.-Am-using-CMake-tp23907687p23910081.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
> ‹ÿYŸ 
> \ 
> » 
>  
>> ã 
> ]‹X»[ô⁄X⁄»
HU»êTH]à


ãÀ›››Àö]À 
> õ‹ôÀ’⁄Z⁄K“U◊—êTBÇëõ 
>>  
>  
>> » 
> 
 
> \ 
> » 
>  
>  
> [ 
> ö 
> » 
> 
 
>  
> » 
> 
 
>> Xúÿ 
> ‹öXôK›[ú›Xúÿ‹öXôNÇö


ãÀ›››Àö]Àõ‹ôÀ 
> €XZ[X[ã€\›[ôõÀ⁄[ú⁄Y⁄
]\Ÿ\ú¬å


More information about the Insight-users mailing list