large Windows mingw64 project in C99 --- need ABI compatible D compiler
kinke
noone at nowhere.com
Wed May 20 19:25:27 UTC 2020
On Wednesday, 20 May 2020 at 18:53:01 UTC, NonNull wrote:
> Which D compiler should be used to be ABI compatible with
> mingw32? And which to be ABI compatible with mingw64?
The natural choice for coupling mingw[64]-gcc would be GDC.
Especially wrt. ABI, gdc apparently doesn't have to do much by
itself, in sharp contrast to LDC. No idea where gdc's MinGW[-w64]
support is at though and whether you need more recent D features
not available in gdc.
Wrt. LDC, I think the C ABI for the `-mtriple=x86_64-windows-gnu`
target should be okay. IIRC, MinGW mostly adheres to Microsoft's
official Win64 ABI and mostly just diverges wrt. `real` (80-bit
x87 C `long double` vs. 64-bit double precision for MSVC), and
that's covered by LDC IIRC. The C++ ABI (Itanium mangling, not
the MSVC one) should be okay-ish; there might be differences wrt.
what's considered a POD between MinGW and MSVC. Exception
handling almost certainly doesn't work; TLS may likely not work
either.
In general, druntime and Phobos don't fully support MinGW[-w64],
but if you restrict yourself to -betterC code, that might not be
a problem.
> How can I use D in this situation, where I need it to work
> directly with C data? building DLLs is not going to work here
> for that reason.
With -betterC, generating mixed DLLs shouldn't be any trouble at
all.
More information about the Digitalmars-d-learn
mailing list