| Thread overview |
|---|
April 23, 2007 Interfacing C with D...How to? | ||||
|---|---|---|---|---|
| ||||
Hello! The super guide "D Specification" is not so super sometimes... So, someone has worked with C code in D? i haved coded a little example to try this feature. Simple c file with one fuction: // test.c #include "htest.h" void printFromC(){ printf("Hello World (printed from C)"); } his header file: // htest.h void printFromC(); header file converted in d: /* Converted to D from htest.h by htod */ // htest.d module htest; //#include <iostream> //C void printFromC(); extern (C): void printFromC(void); d main file: // main.d import htest; int main(char[][] args){ printFromC(); } I have no idea if i've coded correctly, and how copile/link...????? Someone can help me? Tks! :-P Dié | ||||
April 23, 2007 Re: Interfacing C with D...How to? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Dié | Dié Wrote: > > Hello! > > The super guide "D Specification" is not so super sometimes... > > So, someone has worked with C code in D? > > i haved coded a little example to try this feature. > > > Simple c file with one fuction: > // test.c > #include "htest.h" > > void printFromC(){ > printf("Hello World (printed from C)"); > } > > his header file: > // htest.h > void printFromC(); > > header file converted in d: > /* Converted to D from htest.h by htod */ > // htest.d > module htest; > //#include <iostream> > > //C void printFromC(); > extern (C): That will make everything following "extern(C)" until you declare otherwise. I think all you really wanted was: extern(C) void printFromC(void); > void printFromC(void); > > d main file: > // main.d > import htest; > int main(char[][] args){ > printFromC(); > } > > I have no idea if i've coded correctly, and how copile/link...????? > > Someone can help me? > > Tks! :-P > > Dié So you're aware, the entirety of the c standard library is available by implementing this; all they did was extern(C): and list off all the C functions. Don't take my word for it, look at: */dmd/src/phobos/std/c/ Note that I didn't actually look up this path, I'm at work, so that's just from memory. Best of luck. | |||
April 24, 2007 Re: Interfacing C with D...How to? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Dié | Dié wrote: <snip> > header file converted in d: > /* Converted to D from htest.h by htod */ > // htest.d > module htest; > //#include <iostream> > > //C void printFromC(); > extern (C): > void printFromC(void); extern (C): void printFromC(); // no void parameter > I have no idea if i've coded correctly, and how copile/link...????? > > Someone can help me? If you're on windows, you have to compile the C file with dmc to get a file that you can link with dmd's output. Like this: dmc -c htest.c And then compile the D file, and link them together to produce main.exe: dmd main htest.o Download (DMC) Digital Mars C compiler here: http://www.digitalmars.com/download/dmcpp.html On linux, you'd probably do the same thing, but use gcc instead of dmc. | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply