Vcpkg: Building pcl works, but pcl_io is linking against both libpng16.dll and libpng16d.dll?

Created on 19 Sep 2019  路  6Comments  路  Source: microsoft/vcpkg

Describe the bug
I've built pcl through vcpkg and have create my own cmake files to find_package and target_link_libraries. It builds fine. But, when I try to run in x64 debug, it fails to start.

This seems to be due to pcl_io_debug.dll in the vcpkg install being linked to both the debug and release versions of libpng16. Here is an excerpt of the generated build.ninja from vcpkg\buildtrees\pcl\x64-windows-dbg:

build bin\pcl_io_debug.dll lib\pcl_io_debug.lib: CXX_SHARED_LIBRARY_LINKER__pcl_io io\CMakeFiles\pcl_io.dir\src\debayer.cpp.obj io\CMakeFiles\pcl_io.dir\src\pcd_grabber.cpp.obj io\CMakeFiles\pcl_io.dir\src\pcd_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\vtk_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\ply_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\ascii_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\compression.cpp.obj io\CMakeFiles\pcl_io.dir\src\lzf.cpp.obj io\CMakeFiles\pcl_io.dir\src\lzf_image_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\obj_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\ifs_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\image_grabber.cpp.obj io\CMakeFiles\pcl_io.dir\src\hdl_grabber.cpp.obj io\CMakeFiles\pcl_io.dir\src\vlp_grabber.cpp.obj io\CMakeFiles\pcl_io.dir\src\robot_eye_grabber.cpp.obj io\CMakeFiles\pcl_io.dir\src\file_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\auto_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\io_exception.cpp.obj io\CMakeFiles\pcl_io.dir\src\vtk_lib_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\png_io.cpp.obj io\CMakeFiles\pcl_io.dir\src\libpng_wrapper.cpp.obj | C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_filesystem-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_thread-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_date_time-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_iostreams-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_system-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_chrono-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_atomic-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_regex-vc140-mt-gd.lib lib\pcl_common_debug.lib lib\pcl_io_ply_debug.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\zlibd.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\freetype.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\freetyped.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\double-conversion.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\lz4.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\lz4d.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\lzma.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\lzmad.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\expat.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\glew32.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\glew32d.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDomainsChemistryOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersFlowPaths-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeneric-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersHyperTree-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersParallelImaging-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersPoints-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersProgrammable-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSMP-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSelection-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersTexture-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersTopology-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersVerdict-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkGUISupportMFC-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\jpeg.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\jpegd.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libpng16.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\libpng16d.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\tiff.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\tiffd.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\proj.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\projd.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\hdf5.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\hdf5_D.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\hdf5_hl.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\hdf5_hl_D.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOAMR-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOAsynchronous-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOCityGML-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOEnSight-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\netcdf.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExodus-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExportOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libhpdf.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\libhpdfd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExportPDF-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOImport-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libxml2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOInfovis-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOLSDyna-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOMINC-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\ogg.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\theoraenc.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\theoradec.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOMovie-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOPLY-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\jsoncpp.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOParallel-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOParallelXML-8.2.lib C$:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\sqlite3.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOSQL-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOSegY-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOTecplotTable-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOVeraOut-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOVideo-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingMorphological-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingStatistics-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingStencil-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionImage-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingContextOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingImage-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingLOD-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingVolumeOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsContext2D-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsGeovis-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\libpng16d.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\zlibd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_filesystem-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_thread-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_date_time-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_iostreams-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_system-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_chrono-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_atomic-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\boost_regex-vc140-mt-gd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDomainsChemistry-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkverdict-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersAMR-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExport-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingGL2PSOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkgl2ps-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\libpng16d.lib C$:\lab\vcpkg\installed\x64-windows\lib\ogg.lib C$:\lab\vcpkg\installed\x64-windows\lib\theoraenc.lib C$:\lab\vcpkg\installed\x64-windows\lib\theoradec.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersParallel-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkexodusII-8.2.lib C$:\lab\vcpkg\installed\x64-windows\lib\netcdf.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOGeometry-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIONetCDF-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkParallelCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOLegacy-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingOpenGL2-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingMath-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\glew32d.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkGeovisCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\projd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsInfovis-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkChartsCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingContext2D-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersImaging-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInfovisLayout-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInfovisCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionWidgets-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersHybrid-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingGeneral-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingSources-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersModeling-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingHybrid-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOImage-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDICOMParser-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkmetaio-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\zlibd.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionStyle-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersExtraction-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersStatistics-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingFourier-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingAnnotation-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingColor-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingVolume-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOXML-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOXMLParser-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingLabel-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingFreeType-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonColor-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeometry-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSources-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeneral-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonComputationalGeometry-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonExecutionModel-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonDataModel-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonMisc-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonSystem-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtksys-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonTransforms-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonMath-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonCore-8.2.lib C$:\lab\vcpkg\installed\x64-windows\debug\lib\freetyped.lib || bin\pcl_common_debug.dll bin\pcl_io_ply_debug.dll
  LANGUAGE_COMPILE_FLAGS = /DWIN32 /D_WINDOWS /W3 /utf-8 /GR /EHsc /MP  /FS -openmp  -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1
  LINK_FLAGS = /machine:x64 /NODEFAULTLIB:LIBCMTD  /debug /INCREMENTAL
  LINK_LIBRARIES = C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_filesystem-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_thread-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_date_time-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_iostreams-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_system-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_chrono-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_atomic-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_regex-vc140-mt-gd.lib delayimp.lib lib\pcl_common_debug.lib lib\pcl_io_ply_debug.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\zlibd.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\freetype.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\freetyped.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\double-conversion.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\lz4.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\lz4d.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\lzma.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\lzmad.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\expat.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\glew32.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\glew32d.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDomainsChemistryOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersFlowPaths-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeneric-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersHyperTree-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersParallelImaging-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersPoints-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersProgrammable-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSMP-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSelection-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersTexture-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersTopology-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersVerdict-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkGUISupportMFC-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\jpeg.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\jpegd.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libpng16.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\libpng16d.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\tiff.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\tiffd.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\proj.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\projd.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\hdf5.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\hdf5_D.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\hdf5_hl.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\hdf5_hl_D.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOAMR-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOAsynchronous-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOCityGML-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOEnSight-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\netcdf.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExodus-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExportOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libhpdf.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\debug\lib\libhpdfd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExportPDF-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOImport-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\libxml2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOInfovis-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOLSDyna-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOMINC-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\ogg.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\theoraenc.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\theoradec.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOMovie-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOPLY-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\jsoncpp.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOParallel-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOParallelXML-8.2.lib C:\lab\vcpkg\installed\x64-windows\share\vtk\..\..\lib\sqlite3.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOSQL-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOSegY-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOTecplotTable-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOVeraOut-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOVideo-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingMorphological-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingStatistics-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingStencil-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionImage-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingContextOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingImage-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingLOD-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingVolumeOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsContext2D-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsGeovis-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\libpng16d.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\zlibd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_filesystem-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_thread-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_date_time-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_iostreams-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_system-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_chrono-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_atomic-vc140-mt-gd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\boost_regex-vc140-mt-gd.lib delayimp.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDomainsChemistry-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkverdict-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersAMR-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOExport-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingGL2PSOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkgl2ps-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\libpng16d.lib C:\lab\vcpkg\installed\x64-windows\lib\ogg.lib C:\lab\vcpkg\installed\x64-windows\lib\theoraenc.lib C:\lab\vcpkg\installed\x64-windows\lib\theoradec.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersParallel-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkexodusII-8.2.lib C:\lab\vcpkg\installed\x64-windows\lib\netcdf.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOGeometry-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIONetCDF-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkParallelCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOLegacy-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingOpenGL2-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingMath-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\glew32d.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkGeovisCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\projd.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsInfovis-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkChartsCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingContext2D-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersImaging-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInfovisLayout-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInfovisCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkViewsCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionWidgets-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersHybrid-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingGeneral-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingSources-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersModeling-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingHybrid-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOImage-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkDICOMParser-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkmetaio-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\zlibd.lib comctl32.lib wsock32.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkInteractionStyle-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersExtraction-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersStatistics-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingFourier-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingAnnotation-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingColor-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingVolume-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkImagingCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOXML-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOXMLParser-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkIOCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingLabel-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingFreeType-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkRenderingCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonColor-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeometry-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersSources-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersGeneral-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonComputationalGeometry-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkFiltersCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonExecutionModel-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonDataModel-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonMisc-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonSystem-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtksys-8.2.lib ws2_32.lib Psapi.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonTransforms-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonMath-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\vtkCommonCore-8.2.lib C:\lab\vcpkg\installed\x64-windows\debug\lib\freetyped.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
  LINK_PATH = -LIBPATH:C:\lab\vcpkg\installed\x64-windows\lib  -LIBPATH:C:\lab\vcpkg\installed\x64-windows\debug\lib
  OBJECT_DIR = io\CMakeFiles\pcl_io.dir
  POST_BUILD = cd .
  PRE_LINK = cd .
  RESTAT = 1
  TARGET_COMPILE_PDB = io\CMakeFiles\pcl_io.dir\
  TARGET_FILE = bin\pcl_io_debug.dll
  TARGET_IMPLIB = lib\pcl_io_debug.lib
  TARGET_PDB = bin\pcl_io_debug.pdb
  RSP_FILE = CMakeFiles\pcl_io.rsp

You'll notice both libpng16.lib and libpng16d.lib in the link line.

I've tried to track down this further, but I wasn't able to follow. I'm still trying to get a handle on cmake and vcpkg. Any ideas?

Environment
Windows - x64 - debug
Visual Studio 2019

To Reproduce
Steps to reproduce the behavior:

  1. vcpkg install pcl:x64-windows
  2. Take a look at the vcpkg\buildtrees\pcl\x64-windows-dbg\build.ninja file. Notice that pcl_io_debug.dll on line 1759 (at least for me!) includes both debug and release versions of libpng16
  3. If you create cmake project executable including the pcl package, you will get a failure when running in debug because libpng16.dll was not found. If you copy this file into the executable folder, it works. libpng16d.dll was already in the folder.

Expected behavior
libpng16.dll should not be linked to when building a debug version.

Failure logs

  • See attached build.ninja, line 1759
    ninja.zip

Additional context
N/a

port-bug

Most helpful comment

I encountered this problem and found a quick fix. In io/CMakeLists.txt, swap the order in which VTK libraries and libpng are included. This way, when the debug DLL for pcl_io is built, the debug version of libpng will be looked up first and used to satisfy linking dependency, before the release version of libpng is pulled in due to VTK.

diff --git a/io/CMakeLists.txt b/io/CMakeLists.txt
index 1741230..2e7aa4e 100644
--- a/io/CMakeLists.txt
+++ b/io/CMakeLists.txt
@@ -334,12 +334,13 @@ set(LIB_NAME "pcl_${SUBSYS_NAME}")
 add_definitions(${VTK_DEFINES})
 PCL_ADD_LIBRARY(${LIB_NAME} COMPONENT ${SUBSYS_NAME} SOURCES ${srcs} ${incs} ${compression_incs} ${impl_incs} ${OPENNI_INCLUDES} ${OPENNI2_INCLUDES})
 target_include_directories(${LIB_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
-link_directories(${VTK_LINK_DIRECTORIES})
-target_link_libraries("${LIB_NAME}" pcl_common pcl_io_ply ${VTK_LIBRARIES})
+
 if(PNG_FOUND)
   target_link_libraries("${LIB_NAME}" ${PNG_LIBRARIES})
 endif()

+link_directories(${VTK_LINK_DIRECTORIES})
+target_link_libraries("${LIB_NAME}" pcl_common pcl_io_ply ${VTK_LIBRARIES})
 if(LIBUSB_1_FOUND)
   target_link_libraries("${LIB_NAME}" ${LIBUSB_1_LIBRARIES})
 endif()

All 6 comments

image

Confirmed, debug library link to libpng release library.

This is because vtk does not solve the dependency library of debug and release.
The following libraries are not solved:

  • freetype
  • double-conversion
  • lz4
  • lzma
  • expat
  • glew
  • libjpeg
  • libpng
  • tiff
  • proj4
  • hdf5
  • netcdf
  • libhpdf
  • libxml2
  • ogg
  • theora
  • jsoncpp
  • sqlite3

Related: #1627.

Just ran into the same problem when using the PLYWriter class from PCL in x64 debug mode. Looking forward to the fix.

Same issue here. Seen via vtk via pcl.

I encountered this problem and found a quick fix. In io/CMakeLists.txt, swap the order in which VTK libraries and libpng are included. This way, when the debug DLL for pcl_io is built, the debug version of libpng will be looked up first and used to satisfy linking dependency, before the release version of libpng is pulled in due to VTK.

diff --git a/io/CMakeLists.txt b/io/CMakeLists.txt
index 1741230..2e7aa4e 100644
--- a/io/CMakeLists.txt
+++ b/io/CMakeLists.txt
@@ -334,12 +334,13 @@ set(LIB_NAME "pcl_${SUBSYS_NAME}")
 add_definitions(${VTK_DEFINES})
 PCL_ADD_LIBRARY(${LIB_NAME} COMPONENT ${SUBSYS_NAME} SOURCES ${srcs} ${incs} ${compression_incs} ${impl_incs} ${OPENNI_INCLUDES} ${OPENNI2_INCLUDES})
 target_include_directories(${LIB_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
-link_directories(${VTK_LINK_DIRECTORIES})
-target_link_libraries("${LIB_NAME}" pcl_common pcl_io_ply ${VTK_LIBRARIES})
+
 if(PNG_FOUND)
   target_link_libraries("${LIB_NAME}" ${PNG_LIBRARIES})
 endif()

+link_directories(${VTK_LINK_DIRECTORIES})
+target_link_libraries("${LIB_NAME}" pcl_common pcl_io_ply ${VTK_LIBRARIES})
 if(LIBUSB_1_FOUND)
   target_link_libraries("${LIB_NAME}" ${LIBUSB_1_LIBRARIES})
 endif()

Hi guys, I've fixed this issue.
Please update vcpkg and rebuild pcl.

Thanks.

Was this page helpful?
0 / 5 - 0 ratings