[ITK-users] Undefined references to methods of template classes

Francisco Lopez de la Franca franciscolopezdelafranca at gmail.com
Thu Jan 15 01:32:43 EST 2015


Hi Matt,
Thanks a lot for your answers. I'll try this afternoon what you suggest
regarding the shape filter, but what do you think about my results as for
the texture filter?
Regards.
/Francisco

2015-01-15 2:30 GMT+01:00 Matt McCormick <matt.mccormick at kitware.com>:

> Hi Francisco,
>
> Great to hear about the progress!
>
> The itk::BinaryImageToShapeLabelMapFilter  requires a binary input,
> which should have an integer pixel type, like unsigned char or
> unsigned short.  It is important to set the BackgroundValue and
> ForegroundValue [1] to get this filter to work correctly.
>
> HTH,
> Matt
>
> [1]
> http://www.itk.org/Doxygen/html/classitk_1_1BinaryImageToShapeLabelMapFilter.html
>
> On Wed, Jan 14, 2015 at 5:05 PM, Francisco Lopez de la Franca
> <franciscolopezdelafranca at gmail.com> wrote:
> > Hi again.
> > I fixed all the errors and got my library, now ready to be tested.
> > It contains an encapsulation, on the one hand, of the class
> > itkBinaryImageToShapeLabelMapFilter in order to get image shape
> descriptors
> > of a 3D binary image, and on the other hand, the same for the class
> > itkScalarImageToTextureFeaturesFilter to get image texture features of a
> 3D
> > scalar image.
> >
> > I pass as input image to both classes a binary 3D Nifti image
> (150x150x150)
> > containing a cylinder where the inside voxels are 255 and the outside
> voxels
> > are 0.
> >
> > As for the shape issue, it's very strange to me that the call to
> > GetNumberOfLabelObjects on a itk::LabelMap object returns a value of 0.
> The
> > main code is as follows:
> >
> > binaryImageToShapeLabelMapFilter->SetInput(_input);
> > binaryImageToShapeLabelMapFilter->ComputePerimeterOn();
> > binaryImageToShapeLabelMapFilter->Update();
> >
> > LabelMapType::Pointer labelMap =
> > binaryImageToShapeLabelMapFilter->GetOutput();
> >
> > int nrOfLabelObjects = labelMap->GetNumberOfLabelObjects();
> >
> >
> > And, as for the texture features, the result of the filter does not seem
> to
> > be very logic:
> >
> > Energy = 1
> > Entropy = 0
> > Correlation = 1
> > Local Homogeneity = 0
> > Inertia = 0
> > Cluster Shade = 0
> > Cluster Prominence = 0
> >
> > I've also tested this with a scalar 3D Nifti image and the results are
> the
> > same.
> >
> > And the question is: What kind of image do I have to pass to the filters
> so
> > that the code would return a more logic expected answer?
> >
> > Thank you very much in advance.
> > My best regars.
> > /Francisco
> >
> > 2015-01-10 22:38 GMT+01:00 Matt McCormick <matt.mccormick at kitware.com>:
> >>
> >> Hi Francisco,
> >>
> >> Nice to hear about the progress!
> >>
> >> You will need to link your library to the ITK libraries:
> >>
> >>   target_link_libraries( mylibrary ${ITK_LIBRARIES} )
> >>
> >> HTH,
> >> Matt
> >>
> >> On Sat, Jan 10, 2015 at 4:16 PM, Francisco Lopez de la Franca
> >> <franciscolopezdelafranca at gmail.com> wrote:
> >>>
> >>> Thanks to your previous answer the problem was solved, but another one
> >>> has come out. It occurs when linking to create the library. It gives an
> >>> undefined reference to itk::ExceptionObject::ExceptionObject... as you
> can
> >>> see below.
> >>> What it is strange to me is that before including explicit template
> >>> instantiation, I created the library without errors, and now that I
> include
> >>> that, I get this error.
> >>> I'll appreciate very much any help.
> >>>
> >>> Linking CXX shared library libTFM_Features.dll
> >>>
> >>>
> CMakeFiles\TFM_Features.dir/objects.a(TFM_Features.cpp.obj):TFM_Features.cpp:(.t
> >>>
> >>>
> ext$_ZN3itk21MemoryAllocationErrorC1ERKSsjS2_S2_[_ZN3itk21MemoryAllocationErrorC
> >>> 1ERKSsjS2_S2_]+0x35): undefined reference to
> >>> `itk::ExceptionObject::ExceptionObj
> >>> ect(std::string const&, unsigned int, std::string const&, std::string
> >>> const&)'
> >>>
> >>>
> CMakeFiles\TFM_Features.dir/objects.a(TFM_Features.cpp.obj):TFM_Features.cpp:(.t
> >>>
> >>>
> ext$_ZN3itk21MemoryAllocationErrorC1ERKSsjS2_S2_[_ZN3itk21MemoryAllocationErrorC
> >>> 1ERKSsjS2_S2_]+0x40): undefined reference to `vtable for
> >>> itk::MemoryAllocationEr
> >>> ror'
> >>>
> >>>
> C:/CV/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.2/../../../../x86_64-w64-min
> >>> gw32/bin/ld.exe:
> >>> CMakeFiles\TFM_Features.dir/objects.a(TFM_Features.cpp.obj): ba
> >>> d reloc address 0x40 in section
> >>> `.text$_ZN3itk21MemoryAllocationErrorC1ERKSsjS2_
> >>> S2_[_ZN3itk21MemoryAllocationErrorC1ERKSsjS2_S2_]'
> >>> collect2.exe: error: ld returned 1 exit status
> >>> SRC\CMakeFiles\TFM_Features.dir\build.make:219: recipe for target
> >>> 'SRC/libTFM_Fe
> >>> atures.dll' failed
> >>> mingw32-make[2]: *** [SRC/libTFM_Features.dll] Error 1
> >>> CMakeFiles\Makefile2:77: recipe for target
> >>> 'SRC/CMakeFiles/TFM_Features.dir/all'
> >>>  failed
> >>> mingw32-make[1]: *** [SRC/CMakeFiles/TFM_Features.dir/all] Error 2
> >>> Makefile:74: recipe for target 'all' failed
> >>> mingw32-make: *** [all] Error 2
> >>>
> >>>
> >>> 2015-01-09 21:02 GMT+01:00 Matt McCormick <matt.mccormick at kitware.com
> >:
> >>>>
> >>>> Hi Francisco,
> >>>>
> >>>> In order for the templates to be available in the library, they must
> >>>> be explicitly instantiated [1].
> >>>>
> >>>> HTH,
> >>>> Matt
> >>>>
> >>>> [1] http://www.cplusplus.com/articles/1C75fSEw/
> >>>>
> >>>> On Fri, Jan 9, 2015 at 2:59 PM, Francisco Lopez de la Franca
> >>>> <franciscolopezdelafranca at gmail.com> wrote:
> >>>> > Hi.
> >>>> > I' like to create a library containing, for example, one template
> >>>> > class with
> >>>> > a number of methods.
> >>>> > I've programmed a simple example and the compilation and generation
> of
> >>>> > the
> >>>> > library goes fine. I use the cmake "add_library" command for
> >>>> > generating the
> >>>> > library.
> >>>> >
> >>>> > The problem arises at the moment of testing the library. I get an
> >>>> > undefined
> >>>> > reference for every method in the template class.
> >>>> >
> >>>> > I've downloaded a tool to look in the contents (functions) of
> dynamic
> >>>> > libraries, and there is no function in the library. If I add another
> >>>> > class
> >>>> > (not a template class), then, this tool shows me only the functions
> in
> >>>> > this
> >>>> > latter class.
> >>>> >
> >>>> > Has anyone ever come across with this problem?
> >>>> >
> >>>> > Thanks a lot in advance.
> >>>> > Regards
> >>>> > /Francisco
> >>>> >
> >>>> > _____________________________________
> >>>> > Powered by www.kitware.com
> >>>> >
> >>>> > Visit other Kitware open-source projects at
> >>>> > http://www.kitware.com/opensource/opensource.html
> >>>> >
> >>>> > Kitware offers ITK Training Courses, for more information visit:
> >>>> > http://www.kitware.com/products/protraining.php
> >>>> >
> >>>> > 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://public.kitware.com/mailman/listinfo/insight-users
> >>>> >
> >>>
> >>>
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20150115/23f14738/attachment.html>


More information about the Insight-users mailing list