On Tuesday, 29 May 2018 at 04:49:34 UTC, Nicholas Wilson wrote:
On Tuesday, 29 May 2018 at 01:43:17 UTC, Mike Parker wrote:
In pdf.h, that CAPI macro is used in every function
declaration. That means that on Windows, all of the functions
have the __stdcall calling convention (which, in D, would be
extern(Windows)) and the standard cdecl calling convetion on
other platforms (extern(C) in D).
In the D binding, we see that all of the functions are
declared as extern(C) (line 4 of pdf.d). That means on
Windows, the calling convention on the D side is incorrect.
What you need to do is to change that extern(C) delcaration in
pdf.d to extern(System). This will translate to
extern(Windows) on Windows and extern(C) elsewhere to match
the C headers.
this is represented by extern(System) in D which does the
conditional
extern(C) vs extern(Windows) for you.
Apparently I can't read.