0
votes

i'm getting undefined reference to `_createImage(int, int, int, int, float, float, float, int, WORD_KIND, SIGN)', when i tried to take part of code from : https://doc.cgal.org/latest/Mesh_3/Mesh_3_2random_labeled_image_8h-example.html

Basically what i am trying to do is convert ITK image to CGAL image_3, and in order to do that i need to init image_3 with my own data, but it gives me undefined reference to _create_image. I have added headers of ImageIO and Image_3

const int dim = 400;
 _image* image = _createImage(dim, dim, dim, 1,
                              1.f, 1.f, 1.f, 1,
                              WK_FIXED, SGN_UNSIGNED);

Cmakelist.txt

find_package(CGAL QUIET)
if( CGAL_FOUND)
include_directories("/usr/local/include")
message(STATUS "CGAL status:")
message(STATUS "    libraries: ${CGAL_LIB}")
message(STATUS "    include path: ${CGAL_INCLUDE_DIRS}")
endif(CGAL_FOUND)
target_link_libraries(main  meshlib iolib ${ITK_LIBRARIES} ${CGAL_LIB} )

flags

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11  -Wall -Wall -g -Wextra -Wno-sign-compare  -pthread -ltbb -lpthread -lCGAL -lCGAL_Core -lCGAL_ImageIO  -lmpfr -lgmp -frounding-math ")

Failure:

libmeshlib.a(volumetric-image.cpp.o): In function VolumetricImage::ItkImageToCgalImage(itk::SmartPointer<itk::Image<char, 3u> >&, CGAL::Image_3&)': /home/n/Documents/b1/b1/src/volumetric-image.cpp:217: undefined reference to_createImage(int, int, int, int, float, float, float, int, WORD_KIND, SIGN)' libmeshlib.a(volumetric-image.cpp.o): In function CGAL::Image_3::Image_3(point_image*)': /usr/local/include/CGAL/Image_3.h:105: undefined reference to CGAL::Image_3::private_read(point_image*)' collect2: error: ld returned 1 exit status src/CMakeFiles/main.dir/build.make:419: recipe for target 'src/main' failed make[2]: * [src/main] Error 1 make[2]: Leaving directory '/home/noega/Documents/b1/b1/build' CMakeFiles/Makefile2:896: recipe for target 'src/CMakeFiles/main.dir/all' failed make[1]: * [src/CMakeFiles/main.dir/all] Error 2 make[1]: Leaving directory '/home/n/Documents/b1/b1/build' Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

Method

void VolumetricImage::ItkImageToCgalImage(itk::Image<char, 3>::Pointer &in_volumetric_image, CGAL::Image_3 &out_image) {
  typedef itk::Image< char, 3 > image_type;
  image_type::RegionType region = in_volumetric_image->GetLargestPossibleRegion();
  image_type::SizeType size = region.GetSize();
  image_type::SpacingType voxel_size = in_volumetric_image->GetSpacing();
  _image* im = _createImage(size[0], size[1], size[2], 1,
                         voxel_size[0], voxel_size[1], voxel_size[2],
                         1, WK_FIXED, SGN_SIGNED);
  CGAL::Image_3 image(im);
}

EDIT 2:

92%] Linking CXX executable main cd /home/n/Documents/b1/b1/build/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/main.dir/link.txt --verbose=1 /usr/bin/c++ -std=c++11 -Wall -Wall -g -Wextra -Wno-sign-compare
-pthread -ltbb -lpthread -lCGAL -lCGAL_Core -lCGAL_ImageIO -lmpfr -lgmp -frounding-math

EDIT 3:

[ 92%] Linking CXX executable main cd /home/n/Documents/b1/b1/build/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/main.dir/link.txt --verbose=1 /usr/bin/c++ -std=c++11 -Wall -Wall -g -Wextra -Wno-sign-compare
-pthread -ltbb -lpthread -lCGAL -lCGAL_Core -lCGAL_ImageIO -lmpfr -lgmp -frounding-math CMakeFiles/main.dir/main.cpp.o -o main -rdynamic libmeshlib.a libiolib.a /usr/local/lib/libitkdouble-conversion-4.12.a /usr/local/lib/libitksys-4.12.a /usr/local/lib/libitkvnl_algo-4.12.a /usr/local/lib/libitkvnl-4.12.a /usr/local/lib/libitkv3p_netlib-4.12.a /usr/local/lib/libitknetlib-4.12.a /usr/local/lib/libitkvcl-4.12.a /usr/local/lib/libITKCommon-4.12.a /usr/local/lib/libitkNetlibSlatec-4.12.a /usr/local/lib/libITKStatistics-4.12.a /usr/local/lib/libITKTransform-4.12.a /usr/local/lib/libITKIOImageBase-4.12.a /usr/local/lib/libITKIOBMP-4.12.a /usr/local/lib/libITKEXPAT-4.12.a /usr/local/lib/libitkzlib-4.12.a /usr/local/lib/libitkgdcmDICT-4.12.a /usr/local/lib/libitkgdcmMSFF-4.12.a /usr/local/lib/libITKIOGDCM-4.12.a /usr/local/lib/libITKIOGIPL-4.12.a /usr/local/lib/libitkjpeg-4.12.a /usr/local/lib/libITKIOJPEG-4.12.a /usr/local/lib/libITKMetaIO-4.12.a /usr/local/lib/libITKIOMeta-4.12.a /usr/local/lib/libITKznz-4.12.a /usr/local/lib/libITKniftiio-4.12.a /usr/local/lib/libITKIONIFTI-4.12.a /usr/local/lib/libITKNrrdIO-4.12.a /usr/local/lib/libITKIONRRD-4.12.a /usr/local/lib/libitkpng-4.12.a /usr/local/lib/libITKIOPNG-4.12.a /usr/local/lib/libitktiff-4.12.a /usr/local/lib/libITKIOTIFF-4.12.a /usr/local/lib/libITKIOVTK-4.12.a /usr/local/lib/libITKLabelMap-4.12.a /usr/local/lib/libITKMesh-4.12.a /usr/local/lib/libITKSpatialObjects-4.12.a /usr/local/lib/libITKPath-4.12.a /usr/local/lib/libITKQuadEdgeMesh-4.12.a /usr/local/lib/libITKOptimizers-4.12.a /usr/local/lib/libITKPolynomials-4.12.a /usr/local/lib/libITKBiasCorrection-4.12.a /usr/local/lib/libITKBioCell-4.12.a /usr/local/lib/libITKDICOMParser-4.12.a /usr/local/lib/libITKIOXML-4.12.a /usr/local/lib/libITKIOSpatialObjects-4.12.a /usr/local/lib/libITKFEM-4.12.a /usr/local/lib/libITKgiftiio-4.12.a /usr/local/lib/libITKIOMesh-4.12.a /usr/local/lib/libitkhdf5_cpp.a /usr/local/lib/libitkhdf5.a /usr/local/lib/libITKIOBioRad-4.12.a /usr/local/lib/libITKIOCSV-4.12.a /usr/local/lib/libITKIOIPL-4.12.a /usr/local/lib/libITKIOGE-4.12.a /usr/local/lib/libITKIOSiemens-4.12.a /usr/local/lib/libITKIOHDF5-4.12.a /usr/local/lib/libITKIOLSM-4.12.a /usr/local/lib/libITKIOMRC-4.12.a /usr/local/lib/libITKIOStimulate-4.12.a /usr/local/lib/libITKTransformFactory-4.12.a /usr/local/lib/libITKIOTransformBase-4.12.a /usr/local/lib/libITKIOTransformHDF5-4.12.a /usr/local/lib/libITKIOTransformInsightLegacy-4.12.a /usr/local/lib/libITKIOTransformMatlab-4.12.a /usr/local/lib/libITKKLMRegionGrowing-4.12.a /usr/local/lib/libITKVTK-4.12.a /usr/local/lib/libITKWatersheds-4.12.a /usr/local/lib/libITKOptimizersv4-4.12.a /usr/local/lib/libITKVideoCore-4.12.a /usr/local/lib/libITKVideoIO-4.12.a -lCGAL /usr/local/lib/libvtkzlib-8.0.a /usr/local/lib/libvtkFiltersImaging-8.0.a /usr/local/lib/libvtkCommonCore-8.0.a /usr/local/lib/libvtksys-8.0.a /usr/local/lib/libvtkCommonDataModel-8.0.a /usr/local/lib/libvtkCommonMath-8.0.a /usr/local/lib/libvtkCommonMisc-8.0.a /usr/local/lib/libvtkCommonSystem-8.0.a /usr/local/lib/libvtkCommonTransforms-8.0.a /usr/local/lib/libvtkCommonExecutionModel-8.0.a /usr/local/lib/libvtkFiltersStatistics-8.0.a /usr/local/lib/libvtkImagingFourier-8.0.a /usr/local/lib/libvtkImagingCore-8.0.a /usr/local/lib/libvtkalglib-8.0.a /usr/local/lib/libvtkImagingGeneral-8.0.a /usr/local/lib/libvtkImagingSources-8.0.a /usr/local/lib/libvtkFiltersFlowPaths-8.0.a /usr/local/lib/libvtkFiltersCore-8.0.a /usr/local/lib/libvtkFiltersGeometry-8.0.a /usr/local/lib/libvtkFiltersSources-8.0.a /usr/local/lib/libvtkCommonComputationalGeometry-8.0.a /usr/local/lib/libvtkFiltersGeneral-8.0.a /usr/local/lib/libvtkIOCore-8.0.a /usr/local/lib/libvtklz4-8.0.a /usr/local/lib/libvtkFiltersProgrammable-8.0.a /usr/local/lib/libvtkDICOMParser-8.0.a /usr/local/lib/libvtkRenderingOpenGL2-8.0.a /usr/local/lib/libvtkRenderingCore-8.0.a /usr/local/lib/libvtkCommonColor-8.0.a /usr/local/lib/libvtkglew-8.0.a /usr/local/lib/libvtkIOTecplotTable-8.0.a /usr/local/lib/libvtkFiltersSelection-8.0.a /usr/local/lib/libvtkRenderingImage-8.0.a /usr/local/lib/libvtkFiltersAMR-8.0.a /usr/local/lib/libvtkIOXML-8.0.a /usr/local/lib/libvtkIOXMLParser-8.0.a /usr/local/lib/libvtkexpat-8.0.a /usr/local/lib/libvtkParallelCore-8.0.a /usr/local/lib/libvtkIOLegacy-8.0.a /usr/local/lib/libvtkImagingStencil-8.0.a /usr/local/lib/libvtkhdf5_hl-8.0.a /usr/local/lib/libvtkhdf5-8.0.a /usr/local/lib/libvtkImagingMorphological-8.0.a /usr/local/lib/libvtklibharu-8.0.a /usr/local/lib/libvtkpng-8.0.a /usr/local/lib/libvtkIOAMR-8.0.a /usr/local/lib/libvtkFiltersTexture-8.0.a /usr/local/lib/libvtkproj4-8.0.a /usr/local/lib/libvtkViewsContext2D-8.0.a /usr/local/lib/libvtkRenderingContext2D-8.0.a /usr/local/lib/libvtkRenderingFreeType-8.0.a /usr/local/lib/libvtkfreetype-8.0.a /usr/local/lib/libvtkViewsCore-8.0.a /usr/local/lib/libvtkInteractionWidgets-8.0.a /usr/local/lib/libvtkFiltersHybrid-8.0.a /usr/local/lib/libvtkFiltersModeling-8.0.a /usr/local/lib/libvtkImagingColor-8.0.a /usr/local/lib/libvtkImagingHybrid-8.0.a /usr/local/lib/libvtkIOImage-8.0.a /usr/local/lib/libvtkmetaio-8.0.a /usr/local/lib/libvtkjpeg-8.0.a /usr/local/lib/libvtktiff-8.0.a /usr/local/lib/libvtkInteractionStyle-8.0.a /usr/local/lib/libvtkFiltersExtraction-8.0.a /usr/local/lib/libvtkRenderingAnnotation-8.0.a /usr/local/lib/libvtkRenderingVolume-8.0.a /usr/local/lib/libvtkRenderingGL2PSOpenGL2-8.0.a /usr/local/lib/libvtkgl2ps-8.0.a /usr/local/lib/libvtkTestingIOSQL-8.0.a /usr/local/lib/libvtkIOSQL-8.0.a /usr/local/lib/libvtksqlite-8.0.a /usr/local/lib/libvtkFiltersHyperTree-8.0.a /usr/local/lib/libvtkNetCDF-8.0.a /usr/local/lib/libvtkverdict-8.0.a /usr/local/lib/libvtkInfovisCore-8.0.a /usr/local/lib/libvtkRenderingLOD-8.0.a /usr/local/lib/libvtkRenderingContextOpenGL2-8.0.a /usr/local/lib/libvtkLocalExample-8.0.a /usr/local/lib/libvtkIOExportOpenGL2-8.0.a /usr/local/lib/libvtkIOExport-8.0.a /usr/local/lib/libvtkViewsInfovis-8.0.a /usr/local/lib/libvtkChartsCore-8.0.a /usr/local/lib/libvtkInfovisLayout-8.0.a /usr/local/lib/libvtkRenderingLabel-8.0.a /usr/local/lib/libvtkDomainsChemistry-8.0.a /usr/local/lib/libvtkexoIIc-8.0.a /usr/local/lib/libvtkFiltersSMP-8.0.a /usr/local/lib/libvtknetcdf_c++.a /usr/local/lib/libvtkFiltersParallelImaging-8.0.a /usr/local/lib/libvtkFiltersParallel-8.0.a /usr/local/lib/libvtkFiltersVerdict-8.0.a /usr/local/lib/libvtkInteractionImage-8.0.a /usr/local/lib/libvtkIOImport-8.0.a /usr/local/lib/libvtkTestingRendering-8.0.a /usr/local/lib/libvtklibxml2-8.0.a /usr/local/lib/libvtkIOParallel-8.0.a /usr/local/lib/libvtkIOGeometry-8.0.a /usr/local/lib/libvtkIONetCDF-8.0.a /usr/local/lib/libvtkjsoncpp-8.0.a /usr/local/lib/libvtkDomainsChemistryOpenGL2-8.0.a /usr/local/lib/libvtkFiltersPoints-8.0.a /usr/local/lib/libvtkoggtheora-8.0.a /usr/local/lib/libvtkTestingGenericBridge-8.0.a /usr/local/lib/libvtkIOMovie-8.0.a /usr/local/lib/libvtkImagingMath-8.0.a /usr/local/lib/libvtkIOVideo-8.0.a /usr/local/lib/libvtkGeovisCore-8.0.a /usr/local/lib/libvtkIOPLY-8.0.a /usr/local/lib/libvtkIOEnSight-8.0.a /usr/local/lib/libvtkIOInfovis-8.0.a /usr/local/lib/libvtkIOExodus-8.0.a /usr/local/lib/libvtkIOLSDyna-8.0.a /usr/local/lib/libvtkImagingStatistics-8.0.a /usr/local/lib/libvtkFiltersGeneric-8.0.a /usr/local/lib/libvtkFiltersTopology-8.0.a /usr/local/lib/libvtkIOMINC-8.0.a /usr/local/lib/libvtkRenderingVolumeOpenGL2-8.0.a /usr/local/lib/libvtkIOParallelXML-8.0.a -lgmp /usr/local/lib/libmpfr.so -lboost_log -lboost_log_setup -lboost_thread -lboost_date_time -lboost_filesystem -lboost_system -lboost_regex -lboost_chrono -lboost_atomic -lpthread /usr/local/lib/libitkgdcmMSFF-4.12.a /usr/local/lib/libitkgdcmDICT-4.12.a /usr/local/lib/libitkgdcmIOD-4.12.a /usr/local/lib/libitkgdcmDSED-4.12.a /usr/local/lib/libitkgdcmCommon-4.12.a /usr/local/lib/libitkgdcmjpeg8-4.12.a /usr/local/lib/libitkgdcmjpeg12-4.12.a /usr/local/lib/libitkgdcmjpeg16-4.12.a /usr/local/lib/libitkgdcmopenjpeg-4.12.a /usr/local/lib/libitkgdcmcharls-4.12.a /usr/local/lib/libitkgdcmuuid-4.12.a /usr/local/lib/libITKNrrdIO-4.12.a /usr/local/lib/libitkpng-4.12.a /usr/local/lib/libITKIOXML-4.12.a /usr/local/lib/libITKMetaIO-4.12.a /usr/local/lib/libITKgiftiio-4.12.a /usr/local/lib/libITKEXPAT-4.12.a /usr/local/lib/libITKniftiio-4.12.a /usr/local/lib/libITKznz-4.12.a /usr/local/lib/libITKIOIPL-4.12.a /usr/local/lib/libITKIOTIFF-4.12.a /usr/local/lib/libitktiff-4.12.a /usr/local/lib/libitkjpeg-4.12.a /usr/local/lib/libitkhdf5_cpp.a /usr/local/lib/libitkhdf5.a /usr/local/lib/libitkzlib-4.12.a /usr/local/lib/libITKIOTransformBase-4.12.a /usr/local/lib/libITKTransformFactory-4.12.a /usr/local/lib/libITKSpatialObjects-4.12.a /usr/local/lib/libITKMesh-4.12.a /usr/local/lib/libITKTransform-4.12.a /usr/local/lib/libITKPath-4.12.a /usr/local/lib/libITKOptimizers-4.12.a /usr/local/lib/libITKStatistics-4.12.a /usr/local/lib/libitkNetlibSlatec-4.12.a /usr/local/lib/libITKIOImageBase-4.12.a /usr/local/lib/libITKVideoCore-4.12.a /usr/local/lib/libITKCommon-4.12.a /usr/local/lib/libitkdouble-conversion-4.12.a /usr/local/lib/libitksys-4.12.a /usr/local/lib/libITKVNLInstantiation-4.12.a /usr/local/lib/libitkvnl_algo-4.12.a /usr/local/lib/libitkvnl-4.12.a /usr/local/lib/libitkv3p_netlib-4.12.a /usr/local/lib/libitknetlib-4.12.a /usr/local/lib/libitkvcl-4.12.a /usr/local/lib/libvtkFiltersAMR-8.0.a /usr/local/lib/libvtklibharu-8.0.a /usr/local/lib/libvtkRenderingGL2PSOpenGL2-8.0.a /usr/local/lib/libvtkgl2ps-8.0.a /usr/local/lib/libvtkRenderingContext2D-8.0.a /usr/local/lib/libvtkFiltersImaging-8.0.a /usr/local/lib/libvtkverdict-8.0.a /usr/local/lib/libvtkFiltersParallel-8.0.a /usr/local/lib/libvtknetcdf_c++.a /usr/local/lib/libvtkDomainsChemistry-8.0.a /usr/local/lib/libvtkoggtheora-8.0.a /usr/local/lib/libvtkproj4-8.0.a /usr/local/lib/libvtkViewsCore-8.0.a /usr/local/lib/libvtkInteractionWidgets-8.0.a /usr/local/lib/libvtkImagingGeneral-8.0.a /usr/local/lib/libvtkRenderingAnnotation-8.0.a /usr/local/lib/libvtkRenderingFreeType-8.0.a /usr/local/lib/libvtkfreetype-8.0.a /usr/local/lib/libvtkImagingColor-8.0.a /usr/local/lib/libvtkInteractionStyle-8.0.a /usr/local/lib/libvtkInfovisLayout-8.0.a /usr/local/lib/libvtkFiltersModeling-8.0.a /usr/local/lib/libvtkImagingHybrid-8.0.a /usr/local/lib/libvtkInfovisCore-8.0.a /usr/local/lib/libvtkFiltersExtraction-8.0.a /usr/local/lib/libvtkFiltersStatistics-8.0.a /usr/local/lib/libvtkImagingFourier-8.0.a /usr/local/lib/libvtkalglib-8.0.a /usr/local/lib/libvtklibxml2-8.0.a /usr/local/lib/libvtkexoIIc-8.0.a /usr/local/lib/libvtkFiltersHybrid-8.0.a /usr/local/lib/libvtkImagingSources-8.0.a /usr/local/lib/libvtkIOImage-8.0.a /usr/local/lib/libvtkDICOMParser-8.0.a /usr/local/lib/libvtkpng-8.0.a -lm /usr/local/lib/libvtkmetaio-8.0.a /usr/local/lib/libvtktiff-8.0.a /usr/local/lib/libvtkjpeg-8.0.a -lm /usr/local/lib/libvtkNetCDF-8.0.a /usr/local/lib/libvtkhdf5_hl-8.0.a /usr/local/lib/libvtkhdf5-8.0.a -lm /usr/local/lib/libvtkRenderingOpenGL2-8.0.a -lSM -lICE -lX11 -lXext -lXt /usr/local/lib/libvtkglew-8.0.a /usr/local/lib/libvtkRenderingVolume-8.0.a /usr/local/lib/libvtkImagingCore-8.0.a /usr/local/lib/libvtkRenderingCore-8.0.a /usr/local/lib/libvtkFiltersGeometry-8.0.a /usr/local/lib/libvtkFiltersSources-8.0.a /usr/local/lib/libvtkFiltersGeneral-8.0.a /usr/local/lib/libvtkFiltersCore-8.0.a /usr/local/lib/libvtkCommonComputationalGeometry-8.0.a /usr/local/lib/libvtkCommonColor-8.0.a /usr/local/lib/libvtkImagingMath-8.0.a -lGLU -lGL /usr/local/lib/libvtkIOXML-8.0.a /usr/local/lib/libvtkIOXMLParser-8.0.a /usr/local/lib/libvtkexpat-8.0.a /usr/local/lib/libvtkParallelCore-8.0.a /usr/local/lib/libvtkIOLegacy-8.0.a /usr/local/lib/libvtkIOCore-8.0.a /usr/local/lib/libvtkzlib-8.0.a /usr/local/lib/libvtkCommonExecutionModel-8.0.a /usr/local/lib/libvtkCommonDataModel-8.0.a /usr/local/lib/libvtkCommonTransforms-8.0.a /usr/local/lib/libvtkCommonMisc-8.0.a /usr/local/lib/libvtkCommonMath-8.0.a /usr/local/lib/libvtkCommonSystem-8.0.a /usr/local/lib/libvtkCommonCore-8.0.a /usr/local/lib/libvtksys-8.0.a -ldl -lpthread /usr/local/lib/libvtklz4-8.0.a -Wl,-rpath,/usr/local/lib ^[[A^[[A^[[A^[[A^[[Alibmeshlib.a(volumetric-image.cpp.o): In function VolumetricImage::ItkImageToCgalImage(itk::SmartPointer<itk::Image<char, 3u> >&, CGAL::Image_3&)': /home/n/Documents/b1/b1/src/volumetric-image.cpp:217: undefined reference to_createImage(int, int, int, int, float, float, float, int, WORD_KIND, SIGN)' libmeshlib.a(volumetric-image.cpp.o): In function CGAL::Image_3::Image_3(point_image*)': /usr/local/include/CGAL/Image_3.h:105: undefined reference to CGAL::Image_3::private_read(point_image*)' collect2: error: ld returned 1 exit status src/CMakeFiles/main.dir/build.make:419: recipe for target 'src/main' failed make[2]: * [src/main] Error 1 make[2]: Leaving directory '/home/n/Documents/b1/b1/build' CMakeFiles/Makefile2:896: recipe for target 'src/CMakeFiles/main.dir/all' failed make[1]: * [src/CMakeFiles/main.dir/all] Error 2 make[1]: Leaving directory '/home/n/Documents/b1/b1/build' Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

1
Updated thread.duufous
Instead of make, please run make V=1 (or maybe VERBOSE=1) and post the command that fails. CXX_FLAGS is not where linker flags are supposed to be added.Marc Glisse
Added update, also why linker flags aren't suposted to be added to CXX_FLAGS out of curiousity?duufous
I meant a line that gets printed above that, where you should see g++, -lCGAL, etc. I suspect that that line is incorrect (maybe wrong order, especially if you are on Ubuntu).Marc Glisse
I updated, if i posted what you didn't need let me know, sorry in advance then lolduufous

1 Answers

0
votes

You seem to be failing to properly set up linking for CGAL. This thread should help. Just link to ITK instead of VTK.