libheif cannot find libde265 symbols during a static build on Windows
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?
https://github.com/strukturag/libheif/issues/1489 appears related.
@sincos2854 Maybe propose that as a PR for review?
#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.