[vlc-devel] [PATCH] package: win32: Don't use linker script for import libraries
Martin Storsjö
martin at martin.st
Wed Oct 9 11:56:44 CEST 2019
On Wed, 9 Oct 2019, Steve Lhomme wrote:
> Aren't these .lib compatible with MSVC ? Meaning a program built in MSVC
> could link to libvlc even if VLC was not built with it.
Yes they are compatible with MSVC.
Currently, there's four files produced:
libvlc.lib
libvlccore.lib
vlc.lib
vlccore.lib
The first two are import libs, produced by dlltool, which can be linked by
both MSVC and binutils.
The last two are linker scripts, not actual libraries, which only contain
the text "INPUT(libvlc.lib)", acting as a redirection. MSVC does not
support this, and lld in coff mode doesn't either. Only GNU ld supports
it.
When you specify -lvlc for linking, GNU ld doesn't look for "libvlc.lib",
it does look for "libvlc.a", "libvlc.dll.a" and "vlc.lib" (and a number of
other combinations). To fix this, 4ab7dfbf8fc added "vlc.lib" in addition
to "libvlc.lib", with the linker script redirection.
But I think this is bad for two reasons:
1) The name "vlc.lib" makes it sound like this also is a library for MSVC
(and how is an MSVC user going to know which to pick between "libvlc.lib"
and "vlc.lib"?), while it only works with GNU ld. By renaming it from
"vlc.lib" to "libvlc.dll.a" it's clearer what its purpose is (to be picked
up by mingw linkers)
2) lld/coff doesn't support linker script for the redirection, so we can
replace it with a copy instead of a linker script, to make it work with
lld as well.
// Martin
More information about the vlc-devel
mailing list