I'm wrapping a C library which has a lot of structs defined, and I keep running into issues where dmd complains that .init isn't defined ("Symbol Undefined __xxxxxxx__initZ" etc).

I'm struggling to narrow it down to a simple example that demonstrates it - I actually made something that's kind of minimal, but it goes from working to breaking depending on whether the file extension is .di or .d, for the file containing the extern (C)'ed struct definitions. Also it seems to depend (in the .di case) on whether the C structs use double vs. int values for their fields. (int fields work with either file extension)

But simply changing the file extension in my real project, of the header files translated by dstep, seems to have no effect.

In short, it seems that for certain C structs I cannot use them as a field in a D struct even with a manually-specified default value - I get link errors no matter what (init/toHash/opEquals). How can I get around that?

Am I supposed to be doing something with C structs to avoid these kinds of errors in my D code? I've searched the forum but nothing really jumps out at me as relevant.

Reply via email to