Undefined _D10TypeInfo_l6__initZ and _D15TypeInfo_Struct6__vtblZ added when instantiating template structs

Iain Buclaw via D.gnu d.gnu at puremagic.com
Mon Jan 26 15:26:33 PST 2015


On 26 January 2015 at 17:50, Liran Zvibel via D.gnu <d.gnu at puremagic.com> wrote:
> Hi,
>
> I would like to use some D code in a C binary
> .
> Part of the D functionality used is by instantiating templated structs.
>
> Even if I just try to compile the following simple code:
>
> extern (C) {
>     alias mytpye = BLA!(int);
>     struct BLA(T) {
>         T x;
>     }
> }
>
> With the following gcd flags:
> -fno-invariants -fno-in -fno-out -fno-bounds-check -O3 -fno-assert -c
> -nophoboslib  -nostdlib
>

-frelease -O3 -c does the same as -fno-invariants -fno-in ...

> I still have 3 undefined symbols:
> _D10TypeInfo_i6__initZ _D15TypeInfo_Struct6__vtblZ _Dmodule_ref
>
> I can alway just define them in the C glue code and get it over with, but I
> would like to understand what I SHOULD do to get it to easily link into a
> normal C executable.
>

There is work underway to talk about what will need to be done to
implement @notypeinfo or a similarly named attribute.  Until then you
need to link against libdruntime - or a library that provides a
minimal implementation/stubs (ie: minlibd)

As I'm typing this, I can see Mike has replied, probably with this
same answer. :)

Iain.


More information about the D.gnu mailing list