On Sunday, 22 July 2012 at 07:01:50 UTC, Walter Bright wrote:
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.

Okay, but if you had a keyword - say, "extern(rawC)" - that did no mangling whatsoever, then I could run implib without manually editing every single damn line in every Microsoft .def file by hand!!! Surely that's a good idea?

I don't know why implib is ignoring the /s switch, but it is. My .lib file doesn't have underscores, and there doesn't seem to be much I can do about it. Do I need a different version of implib or something? Shouldn't the /s switch add underscores to everything?

Reply via email to