On Thu, 29 Nov 2012, Janne Grunau wrote:

On 2012-11-29 16:39:18 +0200, Martin Storsjö wrote:
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.

---
The filtering via sed, especially using a temporary file, obviously
feels a bit kludgy and ugly, suggestions on better ways of doing it
are welcome.

unnecessary use of cat, posix sed supports file operands. No in-place
editing though.

Ah, right.

Is it possible to recreate the .def files explicitly with
SLIB_CREATE_DEF_CMD?

I guess it might be doable with dlltool, although it probably ends up exactly as what gcc/ld outputs now. But I guess it would make a bit more sense to do this trickery at that step instead.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to