Question about linker errors when using slices

tspike email at gamedevgp.net
Sat Sep 19 02:45:29 UTC 2020


I’ve been using D for personal projects for almost a year now and 
I really love it. I recently ran across a linker error that I’m a 
little confused by. Consider the following files:

platform.d:

     module platform;

     import app;

     struct PlatformData
     {
         AppData a;
     }

     void main()
     {

     }

app.d:

     module app;

     struct AppData
     {
         //int* items;
         int[] items;
     }

If you only compile platform.d, the linker will complain about 
“undefined references.” This is true when using dmd and gdc, 
though platform.d compiles just fine when using ldc. But the file 
only fails to compile when the “items” member of AppData is a 
slice; if “items” is an int* platform.d will compile.

The linker spits the following:

     platform.o:(.data._D22TypeInfo_S3app7AppData6__initZ+0x30): 
undefined reference to `_D3app7AppData9__xtoHashFNbNeKxSQBeQBdZm'
     platform.o:(.data._D22TypeInfo_S3app7AppData6__initZ+0x38): 
undefined reference to 
`_D3app7AppData11__xopEqualsFKxSQBdQBcKxQjZb'

I was just wondering if anyone knows if this behavior is expected 
or if this is a compiler bug. Thank you in advance for your time!

PS: I hope this is the right sub-forum for asking this sort of 
question!


More information about the Digitalmars-d-learn mailing list