Call C function - Access violation
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jan 3 14:38:00 PST 2016
On 03.01.2016 22:37, TheDGuy wrote:
> If i rename "test.o" to "test.obj" i get:
>
> 'Error: Module or Dictionary corrupt'
My guess is, that means that dmd can't handle the object file format
that gcc produces.
Disclaimer: I don't know much about object formats, gcc, and Windows. I
may be mistaken in what I write here.
I think there are three object file formats that are relevant for us:
* OMF: the format dmd uses by default on 32 bit Windows,
* COFF: the format dmd uses on 64 bit Windows and in 32 bit mode with
the -m32mscoff switch,
* ELF: the format gcc uses by default (on Linux at least, maybe on
Windows too).
You should probably try to find out what gcc produces (by reading gcc
documentation, I supppose).
Then you need to get your D compiler and your C compiler to produce the
same format.
As mentioned, dmd has some switches that affect the used/expected object
format: -m32 (OMF) -m64 (COFF) -m32mscoff (COFF).
You can also try to get gcc to produce another format. I don't know how
to do that.
Or you can use another C compiler that produces a different format than gcc.
I'd expect Digital Mars's (i.e. Walter's) dmc to be compatible with dmd
and produce OMF files. Looks like there's a free download:
http://www.digitalmars.com/download/freecompiler.html
dmd's COFF mode is supposed to be compatible with Microsoft's Visual
Studio. So that would be another option.
More information about the Digitalmars-d-learn
mailing list