Linkage question
Paul Backus
snarwin at gmail.com
Mon Jan 24 21:26:46 UTC 2022
On Monday, 24 January 2022 at 19:41:30 UTC, frame wrote:
> It claims that the D calling convention matches C. But it seems
> that the arguments are pushed in order whereas C does it in
> reverse order and the -218697648 value is indeed my 3rd string
> pointer.
Windows has two calling conventions for C functions, `cdecl` and
`stdcall`. In D, `cdecl` is called `extern (C)` and `stdcall` is
called `extern (Windows)`. Windows API functions use the
`stdcall` convention [1], so you need to use `extern (Windows)`
when calling them from D.
[1] https://docs.microsoft.com/en-us/cpp/cpp/stdcall?view=msvc-170
More information about the Digitalmars-d-learn
mailing list