On 7/21/2012 11:45 PM, Daniel Murphy wrote:
The problem isn't that D is mangling names it shouldn't, the problem is that
your import library uses the wrong mangling for the internal names of
imported symbols.  Using the .def file with implib is the correct solution,
unless you want to try converting a coff import library to omf (I've never
got that to work).  The reason implib needs a def file to work correctly is
because only the exported name is stored in the dll, not the mangled name.

This is a very old issue. To be compatible with the output of the Microsoft C compiler, the Windows calling convention is:

   _name@nn

but somehow Microsoft left off the _ and @nn in the DLLs. Hence, part of the whole reason for the import libraries is then to provide a mapping of _name@nn => name.

I have no idea who made this decision and why, but we're stuck with it.


Reply via email to