Optional name mangling

Stuart stugol at gmx.com
Sat Jul 21 16:53:00 PDT 2012


On Saturday, 21 July 2012 at 22:51:14 UTC, Adam D. Ruppe wrote:
> On Saturday, 21 July 2012 at 22:38:32 UTC, Stuart wrote:
>> Attempts to bind to a function called _PathRenameExtension. 
>> Which is, naturally, of no use whatsoever.
>
> That is the norm on Windows though:

Granted. But not everyone's exported functions are prefixed with 
an underscore. I've written DLLs myself using __dllexport, and 
they've been named normally. It'd just be helpful to have the 
option, y'know?

> If you're using implib on a DLL to make a .lib for D though,
> the /S switch might help:
> http://www.digitalmars.com/ctg/implib.html
> "Prepend '_' to exported internal names."

I'm sorry, but the /S (or /system) switch doesn't seem to do 
anything. I still get non-underscore-prefixed output in my .lib 
file. I opened it in a hex editor to verify this; and D says 
"Error 42: Symbol Undefined _PathRenameExtension".

Do I need a different copy of implib, maybe? When I call it with 
/?, I get:

---
Digital Mars Import Library Manager Version 7.6B1n
Copyright (C) Digital Mars 2000.  All Rights Reserved.
Usage:
         IMPLIB [switches] implibname.lib [ file.dll | file.def ]
switches:
         /?      Print this message
         /b      Batch
         /h      Print this message
         /i      Ignore case of symbols
         /noi    Be case sensitive. Mark library as case sensitive
         /nowep  Ignore WEP
         /p:number       Set page size to number (a power of 2)
         /system         Prepend '_' to exported internal names 
(NT system DLL)
---



More information about the Digitalmars-d mailing list