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

Perry Horwich perryhorwich at gmail.com
Sat Jun 6 19:01:34 EDT 2009


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.



More information about the Insight-users mailing list