Why does calling a struct constructor generate linker errors when using Better C?

rikki cattermole rikki at cattermole.co.nz
Sun Dec 24 01:21:53 UTC 2017


On 24/12/2017 1:20 AM, Stijn wrote:
> https://dlang.org/spec/betterc.html doesn't mention struct constructors 
> not working, but I'm getting linker errors when trying to call a struct 
> constructor.
> 
> Consider the following program betterc.d
> 
>      struct foo
>      {
>      }
> 
>      extern(C) void main()
>      {
>          auto bar = new foo();
>      }
> 
> Compile with: dmd -c -m32 betterc.d -betterC
> Link with: gcc -m32 betterc.o -Wl,--build-id=none -nostdlib -o 
> "betterc.bin"
> 
> Linker output:
> 
>      betterc.o: In function `main':
>      betterc.d:(.text.main[main]+0xa): undefined reference to `_d_newitemT'
>      betterc.o:(.data._D22TypeInfo_S7betterc3foo6__initZ+0x0): undefined 
> reference to `_D15TypeInfo_Struct6__vtblZ'
>      collect2: error: ld returned 1 exit status
> 
> Is there a mistake in my code, or is the documentation lacking?

new uses GC.
It has nothing to do with structs.


More information about the Digitalmars-d-learn mailing list