digitalmars.D.learn - Q: how to get C code to work in D?
- Hoenir (9/9) Jun 12 2007 I got a C file (it's a library, so in C you would create a static
- BCS (3/14) Jun 12 2007 Download dmc (the digital mars C compiler) and build the lib with that. ...
- Myron Alexander (8/27) Jun 12 2007 If you already have an obj file but it won't link, it could be that the
- Hoenir (6/25) Jun 12 2007 I don't know which switches to use to generate a static library with dmc...
- Hoenir (3/14) Jun 12 2007 It works now if I use the obj file. But what if I want to import several...
- BCS (3/20) Jun 12 2007 I think their is a lib.exe next to dmc
- Daniel Keep (5/5) Jun 12 2007 IIRC, you can generate a static library simply by not having a main
- Hoenir (2/27) Jun 13 2007 Yes this approach works. Thx.
I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?
Jun 12 2007
Reply to Hoenir,I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?Download dmc (the digital mars C compiler) and build the lib with that. Then pass the .obj's or .lib to dmd with everything else. Or use link.exe directly.
Jun 12 2007
BCS wrote:Reply to Hoenir,If you already have an obj file but it won't link, it could be that the obj format is not compatible with the obj format used by digital mars, in which case you can use one of the converters. I do not know the digital mars tool-chain but I am sure that someone else has had to solve this problem so it will be in the archives. Regards, Myron.I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?Download dmc (the digital mars C compiler) and build the lib with that. Then pass the .obj's or .lib to dmd with everything else. Or use link.exe directly.
Jun 12 2007
BCS schrieb:Reply to Hoenir,I don't know which switches to use to generate a static library with dmc. I tried dmc -c main.c dmd test.d main.obj which didn't fix the Symbol Undefined error.I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?Download dmc (the digital mars C compiler) and build the lib with that. Then pass the .obj's or .lib to dmd with everything else. Or use link.exe directly.
Jun 12 2007
Reply to Hoenir,BCS schrieb:could you post a short example?Reply to Hoenir,I don't know which switches to use to generate a static library with dmc. I tried dmc -c main.c dmd test.d main.obj which didn't fix the Symbol Undefined error.I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?Download dmc (the digital mars C compiler) and build the lib with that. Then pass the .obj's or .lib to dmd with everything else. Or use link.exe directly.
Jun 12 2007
BCS schrieb:Reply to Hoenir,Ah, I'm so dumb. I forgot to pass the other d module to dmd that is imported by test.dBCS schrieb:could you post a short example?Reply to Hoenir,I don't know which switches to use to generate a static library with dmc. I tried dmc -c main.c dmd test.d main.obj which didn't fix the Symbol Undefined error.I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?Download dmc (the digital mars C compiler) and build the lib with that. Then pass the .obj's or .lib to dmd with everything else. Or use link.exe directly.
Jun 12 2007
Hoenir schrieb:I got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?It works now if I use the obj file. But what if I want to import several files, which switch do I need to create a lib?
Jun 12 2007
Reply to Hoenir,Hoenir schrieb:I think their is a lib.exe next to dmc http://www.digitalmars.com/ctg/lib.htmlI got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?It works now if I use the obj file. But what if I want to import several files, which switch do I need to create a lib?
Jun 12 2007
IIRC, you can generate a static library simply by not having a main function anywhere in your program. At least, that's what happens when I forget to link in the module with main in it :P -- Daniel
Jun 12 2007
BCS schrieb:Reply to Hoenir,Yes this approach works. Thx.Hoenir schrieb:I think their is a lib.exe next to dmc http://www.digitalmars.com/ctg/lib.htmlI got a C file (it's a library, so in C you would create a static library and link it to another program) I want to use in D. I already created the necessary d file as described here: http://www.digitalmars.com/d/interfaceToC.html But how do I link the C code? dmd isn't able to compile C files. I know how to get a dll working (creating C dll, corresponding lib with implib and then adding that lib to the command line of dmd) but I want it to be statically linked like in C. Any hints?It works now if I use the obj file. But what if I want to import several files, which switch do I need to create a lib?
Jun 13 2007