numerous linker errors after upgrade from 1.14.4 to 1.16.0
I have tried to upgrade from 1.14.0 to 1.16.0, and got numerous linker errors.
first off, netclock-replay
fails to build:
FAILED: tests/misc/netclock-replay.exe
link @tests/misc/netclock-replay.exe.rsp
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_ref referenced in function _update_clock_cache
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_unref referenced in function _gst_net_client_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_object_ref_sink referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_get_type referenced in function _gst_net_client_clock_class_init
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_get_time referenced in function _gst_net_client_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_set_calibration referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_get_calibration referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_set_timeout referenced in function _gst_net_client_internal_clock_init
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_get_timeout referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_add_observation_unapplied referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_get_internal_time referenced in function _gst_net_client_clock_get_internal_time
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_adjust_with_calibration referenced in function _gst_net_client_clock_get_internal_time
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_is_synced referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_set_synced referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_new_single_shot_id referenced in function _gst_net_client_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_id_unref referenced in function _remove_clock_cache
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_id_wait_async referenced in function _gst_net_client_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_clock_id_unschedule referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_mini_object_ref referenced in function _gst_message_ref
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_mini_object_unref referenced in function _gst_message_unref
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_structure_new referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_structure_to_string referenced in function _main
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_message_get_structure referenced in function _main
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_message_new_element referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_bus_get_type referenced in function _gst_net_client_clock_class_init
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_bus_new referenced in function _main
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_bus_post referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_bus_pop_filtered referenced in function _main
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_debug_log referenced in function _gst_net_client_internal_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp___gst_debug_category_new referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_system_clock_get_type referenced in function _gst_net_client_clock_constructed
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_system_clock_obtain referenced in function _gst_net_client_clock_finalize
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_util_uint64_scale referenced in function _gst_clock_time_to_ntp_timestamp_fraction
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_util_get_timestamp referenced in function _gst_net_client_internal_clock_observe_times
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__gst_init_get_option_group referenced in function _main
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp__GST_CAT_DEFAULT referenced in function _gst_net_time_packet_receive
netclock-replay.c.obj : error LNK2019: unresolved external symbol __imp___gst_debug_min referenced in function _gst_net_client_internal_clock_finalize
tests/misc/netclock-replay.exe : fatal error LNK1120: 37 unresolved externals
[445/448] Compiling C object tests/examples/streams/f808a43@@stream-status@exe/stream-status.c.obj.
[446/448] Compiling C object tests/examples/netclock/685481c@@netclock-client@exe/netclock-client.c.obj.
ninja: build stopped: subcommand failed.
okay, I've disabled examples, benchmarks, tests and tools from build. now I faced the issue that generated libraries have incorrect names (they used to be correct in 1.14.4):
Installing gst\libgstreamer-1.0.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib
Installing libs\gst\base\libgstbase-1.0.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib
Installing libs\gst\controller\controller-enumtypes.h to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\include/gstreamer-1.0/gst/controller
Installing libs\gst\controller\libgstcontroller-1.0.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib
Installing libs\gst\net\libgstnet-1.0.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib
Installing libs\gst\helpers\gst-plugin-scanner.exe to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\bin/gstreamer-1.0
Installing libs\gst\check\libgstcheck-1.0.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib
Installing plugins\elements\libgstcoreelements.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib/gstreamer-1.0
Installing plugins\tracers\libgstcoretracers.a to C:\Users\appveyor\.conan\data\gstreamer\1.16.0\bincrafters\testing\package\fda1d00196b74ad20370b7823ee99f514584b0c3\lib/gstreamer-1.0
okay, that's not a big deal, I've just renamed them to have correct extension. now I get:
gstreamer-1.0.lib(gstinfo.c.obj) : error LNK2019: unresolved external symbol ___gst_vasprintf referenced in function _gst_debug_log_default [C:\projects\conan-gstreamer\test_package\build\2da660a88048c6c53e8c4b4cb483adf7e49f171c\test_package.vcxproj]
gstreamer-1.0.lib(gstelement.c.obj) : error LNK2001: unresolved external symbol ___gst_vasprintf [C:\projects\conan-gstreamer\test_package\build\2da660a88048c6c53e8c4b4cb483adf7e49f171c\test_package.vcxproj]
gstreamer-1.0.lib(gstinfo.c.obj) : error LNK2019: unresolved external symbol ___gst_printf_pointer_extension_set_func referenced in function __priv_gst_debug_init [C:\projects\conan-gstreamer\test_package\build\2da660a88048c6c53e8c4b4cb483adf7e49f171c\test_package.vcxproj]
C:\projects\conan-gstreamer\test_package\build\2da660a88048c6c53e8c4b4cb483adf7e49f171c\bin\test_package.exe : fatal error LNK1120: 2 unresolved externals [C:\projects\conan-gstreamer\test_package\build\2da660a88048c6c53e8c4b4cb483adf7e49f171c\test_package.vcxproj]
on Linux:
/home/conan/.conan/data/gstreamer/1.16.0/bincrafters/testing/package/800069e5ce420d60ec15b459fda1ee8ff5570ed0/lib/libgstreamer-1.0.a(gstelement.c.o): In function `_gst_element_error_printf':
gstelement.c:(.text+0x528e): undefined reference to `__gst_vasprintf'
/home/conan/.conan/data/gstreamer/1.16.0/bincrafters/testing/package/800069e5ce420d60ec15b459fda1ee8ff5570ed0/lib/libgstreamer-1.0.a(gstinfo.c.o): In function `gst_debug_message_get':
gstinfo.c:(.text+0x1f5b): undefined reference to `__gst_vasprintf'
/home/conan/.conan/data/gstreamer/1.16.0/bincrafters/testing/package/800069e5ce420d60ec15b459fda1ee8ff5570ed0/lib/libgstreamer-1.0.a(gstinfo.c.o): In function `_priv_gst_debug_init':
gstinfo.c:(.text+0x3871): undefined reference to `__gst_printf_pointer_extension_set_func'
/home/conan/.conan/data/gstreamer/1.16.0/bincrafters/testing/package/800069e5ce420d60ec15b459fda1ee8ff5570ed0/lib/libgstreamer-1.0.a(gstinfo.c.o): In function `gst_info_vasprintf':
gstinfo.c:(.text+0x437c): undefined reference to `__gst_vasprintf'
make[2]: Leaving directory `/tmp/conans48lork0g'
make[1]: Leaving directory `/tmp/conans48lork0g'
collect2: error: ld returned 1 exit status
on OSX:
Undefined symbols for architecture x86_64:
"___gst_printf_pointer_extension_set_func", referenced from:
__priv_gst_debug_init in libgstreamer-1.0.a(gstinfo.c.o)
"___gst_vasprintf", referenced from:
_gst_debug_log_default in libgstreamer-1.0.a(gstinfo.c.o)
_gst_debug_message_get in libgstreamer-1.0.a(gstinfo.c.o)
_gst_info_vasprintf in libgstreamer-1.0.a(gstinfo.c.o)
_gst_info_strdup_vprintf in libgstreamer-1.0.a(gstinfo.c.o)
_gst_info_strdup_printf in libgstreamer-1.0.a(gstinfo.c.o)
_gst_print in libgstreamer-1.0.a(gstinfo.c.o)
_gst_println in libgstreamer-1.0.a(gstinfo.c.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
just in case, example I am compiling is pretty simple:
#include <iostream>
#include <gst/gst.h>
int main(int argc, char * argv[])
{
gst_init(&argc, &argv);
std::cout << "GStreamer version: " << gst_version_string() << std::endl;
return 0;
}