GNOME Bugzilla – Bug 773889
Missing symbols when using MSVC compiled plugins against MINGW compiled GStreamer
Last modified: 2016-11-22 11:20:55 UTC
Happens with 1.10.0 binaries but only on x86-64, not x86. Missing symbols during plugin loading are e.g. _gst_debug_category_new, _gst_debug_min, and others. It's linked against libgstreamer-1.0-0.dll. The application itself is also compiled with MSVC but has no problems finding GStreamer symbols, and all non-MSVC compiled plugins also load fine.
The same happens when running MINGW compiled gst-inspect-1.0 on the MSVC compiled plugin, so it must be related to the plugin compilation somehow.
This is solved now in the 1.10.0.1 binaries but the reason is completely unknown. Both versions were build on the same machine with the same cerbero version, both times there was a complete wipe of any previous builds. This needs further investigation so it does not happen again in the future.
The symbols exported in DLLS from 1.10.0 and 1.10.0.1 are identical, and the DLLs themselves also seem the same. Both dumpbin and dependency walker say that. Building using MSVC against 1.10.0 and running against 1.10.0.1 works fine. Building using MSVC against 1.10.0.1 and running against 1.10.0.1 works fine. Building using MSVC against 1.10.0.1 and running against 1.10.0 exhibits the bug. Building using MSVC against 1.10.0 and running against 1.10.0 exhibits the bug. The strangest part is that I tested all permutations of MinGW and MSVC before the release, and it always works from a manually-built Cerbero build.
commit ffc6cd333f9cc9a3171a1ec9aa50ac0e9fd893b0 Author: Sebastian Dröge <sebastian@centricular.com> Date: Mon Nov 21 12:54:37 2016 +0200 genlib: Warn if using dlltool and support newer VS versions than 2010 If we generate .lib files with dlltool, they won't work very well with Visual Studio and can result in missing symbols. https://sourceware.org/bugzilla/show_bug.cgi?id=12633 https://bugzilla.gnome.org/show_bug.cgi?id=773889
Confirmed in all variants