writing pure C program with dmd / linking error

Daniel Keep daniel.keep.lists at gmail.com
Sun Mar 11 16:13:01 PDT 2007



Matthias Walter wrote:
> I'm trying to write a pure C program with D, like:
> 
> extern (C) {
> 
> int main(int argc, char **argv) {
>         return 1;
> }
> 
> }
> 
> I did:
> dmd -c test.d
> gcc -o test test.o
> 
> the linker complains: 
> test.o: In function `gcc2_compiled.':
> test.d:(.text+0x8): undefined reference to `_Dmodule_ref'
> 
> I need this, as I want to write a library, which contains C and D, so it must be linkable with a simple c object file. Of course, in this case, I could have simply written it as a c file, but my library seams to need it, too. The symbol is in libphobos.a, but my library should not include / link against phobos.
> 
> Is it possible, to turn off generation of this reference? Is it very important for things to work?
> 
> Or is it even impossible to create libraries with C and D? 
> 
> What about writing C programs the way I did to benefit from all those compiler features like version syntax, DDoc, contract programming, etc.
> 
> I'm running Linux on x86 with dmd-1.009 and gcc-4.1.1

There is no way to stop the compiler inserting the reference to phobos.
 Even if you *could* get it to leave it out, and you managed to not
compile in Phobos, you would be unable to use: exceptions, module
constructors, unit tests, new/delete, arrays, or any of the basic types
where it needs the TypeInfo.

So it's probably not feasible to leave it out.  It would be kind of like
wanting to use Java without the Java VM.

Basically, D is not simply a C compiler with extra "compiler features"
added on: it's a wholly separate language.  If you want to write a "pure
C" program, then you should probably write it in C.

That said, it might be possible to make libraries that can be used by C
programs using gdc under linux -- I don't use either, so I won't comment
one way or the other on that.

Apologies for the terse response, I just woke up and haven't hads me
coffee yet...

	-- Daniel "ugh; damnit sun, stop coming up so early!"

-- 
Unlike Knuth, I have neither proven or tried the above; it may not even
make sense.

v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D
i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP  http://hackerkey.com/


More information about the Digitalmars-d-learn mailing list