Using D libs in C

spir denis.spir at gmail.com
Mon Feb 7 10:53:14 PST 2011


On 02/07/2011 04:32 PM, Steven Schveighoffer wrote:
> On Mon, 07 Feb 2011 06:42:46 -0500, spir <denis.spir at gmail.com> wrote:
>
>> On 02/07/2011 07:53 AM, GreatEmerald wrote:
>>> Hmm, no, it won't work right on Linux for some reason. This is the output:
>>>
>>> /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../libphobos2.a(deh2_4e7_525.o): In
>>> function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable':
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x4):
>>>
>>> undefined reference to `_deh_beg'
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0xc):
>>>
>>> undefined reference to `_deh_beg'
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x13):
>>>
>>> undefined reference to `_deh_end'
>>> src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x37):
>>>
>>> undefined reference to `_deh_end'
>>> collect2: ld returned 1 exit status
>>> --- errorlevel 1
>>>
>>> The shell script I'm using to compile it is:
>>>
>>> #!/bin/sh
>>> dmd -m32 -c -lib dpart.d
>>> gcc -m32 -c cpart.c
>>> dmd -m32 cpart.o dpart.a /usr/lib/libphobos2.a
>>>
>>> (Although it appears that you don't need to explicitly link with libphobos2, it
>>> does it automatically... and fails with the above error.) Any ideas about
>>> what the
>>> error means?
>>
>> Take my words with much doubt, I've few exp in that.
>> Are you sure you did use same source under both OSes?
>> "undefined reference to `_deh_end' / `_deh_beg'"
>
> deh == d exception handling (or handler, not sure) ;)
>
> Looks like the module that's failing to link is rt.deh

Are you sure of that? I get exactly the same kind of linker error when 
forgetting a fake main(){} (whatver the number of modules). Eg:
	...
	src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0xc): undefined reference to `_deh_beg'
	src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x13): undefined reference to `_deh_end'
	...
repeted n times.

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d-learn mailing list