On Jul 22, 2012, at 6:12 AM, "Stuart" <[email protected]> wrote:
> 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? I think there's definitely some use in being able to specify a symbol name as a string, both for aliasing external symbols and overriding name mangling of internal symbols.
