Martin Storsjö <[email protected]> writes: > The def files are used for generating import libraries for > other toolchains (in particular, for generating import libraries > for MSVC for DLLs built with mingw). > > The def files produced by mingw/gcc contains ordinals for each > exported function. When MSVC tools generate import libraries > from such a def file, MSVC links to the DLL by the ordinals > instead of linking by name. > > Since the def files aren't maintained by hand, the ordinal > numbers are assigned (more or less) randomly and any caller > linking to the libs by ordinals will break as soon as the libraries > export more/fewer functions. > > Therefore, strip out the ordinals from the generated def files, > to make users link to the libraries by name. > > Callers linking to the DLLs using the gcc provided import library > link by name as they should. > --- > dlltool can't easily recreate the same def file, and can't output it > to stdout either, so that can't be used to get rid of the temp file. > Got rid of the extra cat call though. > > configure | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configure b/configure > index 8cd5696..bb73001 100755 > --- a/configure > +++ b/configure > @@ -2826,7 +2826,7 @@ case $target_os in > SLIBSUF=".dll" > > SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' > SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' > - SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) > -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' > + SLIB_EXTRA_CMD=-'sed -e s/\ @[^\ ]\*// $$(@:$(SLIBSUF)=.def) > > $$(@:$(SLIBSUF)=.def).tmp; mv $$(@:$(SLIBSUF)=.def).tmp > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l > $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' > SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' > SLIB_INSTALL_LINKS= > SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' > --
If you change the link command to output the .def to a different name, you won't need the mv. -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
