Skip to content

cerbero: Fix loading of rsvg, ttmlsubs, resindvd under MSVC

We were setting objc as [] in the native file, because of which meson was auto-detecting it and finding it inside the MSYS-MinGW env. Then it was using that (instead of the MSVC compiler) to search for libraries inside dependency() and picked the GCC-compatible import libraries (.dll.a) for all dependencies, such as cairo, pango, libxml2, fontconfig, etc.

The MSVC linker tried its best to chug along and mostly succeeded, but possibly due to format incompatibilities between .dll.a and .lib import library formats or bugs in GCC and/or MSVC, this led to the linker getting confused and looking for some libxml2 symbols both inside cairo and libxml2 DLLs, and doing the same for some cairo symbols too.

For example, it was looking for xmlDocGetRootElement and cairo_create in both libxml2-2.dll and also in libcairo-2.dll.

Since in PE images multiple references to the same symbol in different DLLs is allowed and all these references must be resolved at runtime, this was a runtime error not a build-time error. The same thing was also happening to resindvd.

Oh, also re-enable resindvd which was accidentally disabled on MSVC when it was supposed to be disabled on UWP.

Closes #277 (closed)

Merge request reports