Extern C and Symbol Mangling
Oleksii via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri May 26 06:05:12 PDT 2017
On Friday, 26 May 2017 at 12:51:20 UTC, Stanislav Blinov wrote:
> On Friday, 26 May 2017 at 12:49:27 UTC, Oleksii wrote:
>> Hi,
>>
>> I'm trying to link against a DLL which exports a bunch of C
>> functions. The issue is: C symbols do not have underscore
>> prefix in Windows, but DMD sticks underscore in front of the
>> symbol name. For example: `extern(C) void Foo()` becomes
>> `_Foo`.
>>
>> Is there a way to disable that underscore?
>
>
> Use extern(Windows), or the more general extern(System), which
> will expand to either extern(C) or extern(Windows), depending
> on the OS you target.
Great thanks, it helped in deed. I still wonder why, since I
expected `extern(Windows)` to be equal to `__stdcall`, which
should have produced a mangled name `?Foo at 0` instead of `Foo`,
and I can clearly see in the Dependency Walker, that there's no
such symbol in the DLL.
More information about the Digitalmars-d-learn
mailing list