libheif icon indicating copy to clipboard operation
libheif copied to clipboard

libheif cannot find libde265 symbols during a static build on Windows

Open sincos2854 opened this issue 8 months ago • 3 comments

I performed a static build of libheif together with libde265 on Windows. However, libheif was unable to find the symbols from libde265.

My environment is as follows: libheif version: v1.19.7 libde265 version: v1.0.15 Directory where libjpeg-turbo and libpng are installed: D:\pkg Compiler: cl.exe Version 19.43.34810(Visual Studio 2022) OS: Windows 11 24H2

The CMake execution and errors are as follows:

cmake -G "Visual Studio 17 2022" -A x64 ^
-B build ^
-DCMAKE_PREFIX_PATH=D:\pkg ^
-DCMAKE_INSTALL_PREFIX=out ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" ^
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF ^
-DBUILD_SHARED_LIBS=OFF ^
-DBUILD_TESTING=OFF ^
-DWITH_LIBDE265=ON ^
-DWITH_X265=OFF ^
-DWITH_OpenH264_ENCODER=OFF ^
-DWITH_OpenH264_DECODER=OFF ^
-DWITH_AOM_ENCODER=OFF ^
-DWITH_AOM_DECODER=OFF ^
-DWITH_SvtEnc=OFF ^
-DWITH_RAV1E=OFF ^
-DWITH_OpenJPEG_ENCODER=OFF ^
-DWITH_OpenJPEG_DECODER=OFF ^
-DWITH_OPENJPH_ENCODER=OFF ^
-DWITH_LIBSHARPYUV=OFF ^
-DWITH_GDK_PIXBUF=OFF

cmake --build build --config Release --target install
MSBuild version 17.13.19+0d9f5a35a for .NET Framework

  1>Checking Build System
  Building Custom Rule D:/a/libheif/libheif/CMakeLists.txt
  bitstream.cc
  box.cc
  error.cc
  context.cc
  file.cc
  file_layout.cc
  pixelimage.cc
  plugin_registry.cc
  nclx.cc
  security_limits.cc
  init.cc
  logging.cc
  compression_brotli.cc
  compression_zlib.cc
  common_utils.cc
  region.cc
  heif.cc
  heif_regions.cc
  heif_plugin.cc
  heif_properties.cc
  Generating Code...
  Compiling...
  heif_items.cc
  decoder.cc
  hevc.cc
  hevc_boxes.cc
  hevc_dec.cc
  avif.cc
  avif_dec.cc
  avif_boxes.cc
  jpeg.cc
  jpeg_boxes.cc
  jpeg_dec.cc
  jpeg2000.cc
  jpeg2000_dec.cc
  jpeg2000_boxes.cc
  vvc.cc
  vvc_dec.cc
  vvc_boxes.cc
  avc.cc
  avc_boxes.cc
  avc_dec.cc
  Generating Code...
  Compiling...
  mask_image.cc
  image_item.cc
  grid.cc
  overlay.cc
  iden.cc
  tiled.cc
  colorconversion.cc
  rgb2yuv.cc
  rgb2yuv_sharp.cc
  yuv2rgb.cc
  rgb2rgb.cc
  monochrome.cc
  hdr_sdr.cc
  alpha.cc
  chroma_sampling.cc
  plugins_windows.cc
  decoder_libde265.cc
  encoder_mask.cc
  nalu_utils.cc
  Generating Code...
  heif.vcxproj -> D:\a\libheif\build\libheif\Release\heif.lib
  Building Custom Rule D:/a/libheif/heifio/CMakeLists.txt
  decoder_y4m.cc
  encoder.cc
  encoder_y4m.cc
  exif.cc
  stubs.cc
  Generating Code...
  heifio.vcxproj -> D:\a\libheif\build\heifio\Release\heifio.lib
  Building Custom Rule D:/a/libheif/examples/CMakeLists.txt
  getopt.c
  getopt_long.c
  Generating Code...
  heif_dec.cc
  common.cc
  Generating Code...
     Creating library D:/a/libheif/build/examples/Release/heif-dec.lib and object D:/a/libheif/build/examples/Release/heif-dec.exp
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_version referenced in function "char const * __cdecl libde265_plugin_name(void)" (?libde265_plugin_name@@YAPEBDXZ) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_width referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_height referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_chroma_format referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_bits_per_pixel referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_plane referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_full_range_flag referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_colour_primaries referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_transfer_characteristics referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_matrix_coefficients referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_new_decoder referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_start_worker_threads referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free_decoder referenced in function "void __cdecl libde265_free_decoder(void *)" (?libde265_free_decoder@@YAXPEAX@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_push_NAL referenced in function "struct heif_error __cdecl libde265_v1_push_data(void *,void const *,unsigned __int64)" (?libde265_v1_push_data@@YA?AUheif_error@@PEAXPEBX_K@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_flush_data referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_decode referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_release_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_init referenced in function "void __cdecl libde265_init_plugin(void)" (?libde265_init_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-dec.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free referenced in function "void __cdecl libde265_deinit_plugin(void)" (?libde265_deinit_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-dec.vcxproj]
D:\a\libheif\build\examples\Release\heif-dec.exe : fatal error LNK1120: 20 unresolved externals [D:\a\libheif\build\examples\heif-dec.vcxproj]
  Building Custom Rule D:/a/libheif/examples/CMakeLists.txt
  getopt.c
  getopt_long.c
  Generating Code...
  heif_enc.cc
  benchmark.cc
  common.cc
  Generating Code...
     Creating library D:/a/libheif/build/examples/Release/heif-enc.lib and object D:/a/libheif/build/examples/Release/heif-enc.exp
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_version referenced in function "char const * __cdecl libde265_plugin_name(void)" (?libde265_plugin_name@@YAPEBDXZ) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_width referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_height referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_chroma_format referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_bits_per_pixel referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_plane referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_full_range_flag referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_colour_primaries referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_transfer_characteristics referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_matrix_coefficients referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_new_decoder referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_start_worker_threads referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free_decoder referenced in function "void __cdecl libde265_free_decoder(void *)" (?libde265_free_decoder@@YAXPEAX@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_push_NAL referenced in function "struct heif_error __cdecl libde265_v1_push_data(void *,void const *,unsigned __int64)" (?libde265_v1_push_data@@YA?AUheif_error@@PEAXPEBX_K@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_flush_data referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_decode referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_release_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_init referenced in function "void __cdecl libde265_init_plugin(void)" (?libde265_init_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-enc.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free referenced in function "void __cdecl libde265_deinit_plugin(void)" (?libde265_deinit_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-enc.vcxproj]
D:\a\libheif\build\examples\Release\heif-enc.exe : fatal error LNK1120: 20 unresolved externals [D:\a\libheif\build\examples\heif-enc.vcxproj]
  Building Custom Rule D:/a/libheif/examples/CMakeLists.txt
  getopt.c
  getopt_long.c
  Generating Code...
  heif_info.cc
  common.cc
  Generating Code...
     Creating library D:/a/libheif/build/examples/Release/heif-info.lib and object D:/a/libheif/build/examples/Release/heif-info.exp
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_version referenced in function "char const * __cdecl libde265_plugin_name(void)" (?libde265_plugin_name@@YAPEBDXZ) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_width referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_height referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_chroma_format referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_bits_per_pixel referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_plane referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_full_range_flag referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_colour_primaries referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_transfer_characteristics referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_matrix_coefficients referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_new_decoder referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_start_worker_threads referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free_decoder referenced in function "void __cdecl libde265_free_decoder(void *)" (?libde265_free_decoder@@YAXPEAX@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_push_NAL referenced in function "struct heif_error __cdecl libde265_v1_push_data(void *,void const *,unsigned __int64)" (?libde265_v1_push_data@@YA?AUheif_error@@PEAXPEBX_K@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_flush_data referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_decode referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_release_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_init referenced in function "void __cdecl libde265_init_plugin(void)" (?libde265_init_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-info.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free referenced in function "void __cdecl libde265_deinit_plugin(void)" (?libde265_deinit_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-info.vcxproj]
D:\a\libheif\build\examples\Release\heif-info.exe : fatal error LNK1120: 20 unresolved externals [D:\a\libheif\build\examples\heif-info.vcxproj]
  Building Custom Rule D:/a/libheif/examples/CMakeLists.txt
  getopt.c
  getopt_long.c
  Generating Code...
  heif_test.cc
  common.cc
  Generating Code...
     Creating library D:/a/libheif/build/examples/Release/heif-test.lib and object D:/a/libheif/build/examples/Release/heif-test.exp
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_version referenced in function "char const * __cdecl libde265_plugin_name(void)" (?libde265_plugin_name@@YAPEBDXZ) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_width referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_height referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_chroma_format referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_bits_per_pixel referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_plane referenced in function "struct heif_error __cdecl convert_libde265_image_to_heif_image(struct libde265_decoder *,struct de265_image const *,struct heif_image * *)" (?convert_libde265_image_to_heif_image@@YA?AUheif_error@@PEAUlibde265_decoder@@PEBUde265_image@@PEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_full_range_flag referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_colour_primaries referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_transfer_characteristics referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_image_matrix_coefficients referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_new_decoder referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_start_worker_threads referenced in function "struct heif_error __cdecl libde265_new_decoder(void * *)" (?libde265_new_decoder@@YA?AUheif_error@@PEAPEAX@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free_decoder referenced in function "void __cdecl libde265_free_decoder(void *)" (?libde265_free_decoder@@YAXPEAX@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_push_NAL referenced in function "struct heif_error __cdecl libde265_v1_push_data(void *,void const *,unsigned __int64)" (?libde265_v1_push_data@@YA?AUheif_error@@PEAXPEBX_K@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_flush_data referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_decode referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_get_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_release_next_picture referenced in function "struct heif_error __cdecl libde265_v1_decode_image(void *,struct heif_image * *)" (?libde265_v1_decode_image@@YA?AUheif_error@@PEAXPEAPEAUheif_image@@@Z) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_init referenced in function "void __cdecl libde265_init_plugin(void)" (?libde265_init_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-test.vcxproj]
heif.lib(decoder_libde265.obj) : error LNK2019: unresolved external symbol __imp_de265_free referenced in function "void __cdecl libde265_deinit_plugin(void)" (?libde265_deinit_plugin@@YAXXZ) [D:\a\libheif\build\examples\heif-test.vcxproj]
D:\a\libheif\build\examples\Release\heif-test.exe : fatal error LNK1120: 20 unresolved externals [D:\a\libheif\build\examples\heif-test.vcxproj]

Afterwards, I found the following code in de265.h of libde265.

#if defined(_MSC_VER) && !defined(LIBDE265_STATIC_BUILD)
  #ifdef LIBDE265_EXPORTS
  #define LIBDE265_API __declspec(dllexport)
  #else
  #define LIBDE265_API __declspec(dllimport)
  #endif
#elif HAVE_VISIBILITY
  #ifdef LIBDE265_EXPORTS
  #define LIBDE265_API __attribute__((__visibility__("default")))
  #else
  #define LIBDE265_API
  #endif
#else
  #define LIBDE265_API
#endif

So I created the following patch and applied it to CMakeLists.txt of libheif, and the build completed without any errors.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0ea47c4..5a088ffe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,6 +60,9 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+if(NOT BUILD_SHARED_LIBS)
+  add_definitions(-DLIBDE265_STATIC_BUILD)
+endif()

 include(CheckCXXCompilerFlag)
 CHECK_CXX_COMPILER_FLAG(-Wno-error=potentially-evaluated-expression has_potentially_evaluated_expression)

If there is no issue with the above change to CMakeLists.txt, could someone please commit it?

sincos2854 avatar Apr 20 '25 00:04 sincos2854

https://github.com/strukturag/libheif/issues/1489 appears related.

bradh avatar Apr 20 '25 03:04 bradh

@sincos2854 Maybe propose that as a PR for review?

bradh avatar Apr 20 '25 03:04 bradh

#1489 appears related.

Since that is a build for Linux binaries, a different approach will likely be needed to resolve that issue.

@sincos2854 Maybe propose that as a PR for review?

OK, I'm going to try that.

sincos2854 avatar Apr 20 '25 04:04 sincos2854