__init unresolved external when using C library structs converted with dstep

Robert M. Münch robert.muench at saphirion.com
Tue Apr 14 18:29:23 UTC 2020

On 2020-04-14 18:23:05 +0000, Steven Schveighoffer said:

> On 4/14/20 1:51 PM, Robert M. Münch wrote:
>> I use a C libary and created D imports with dstep. It translates the C 
>> structs to D structs.
>> When I now use them, everything compiles fine but I get an unresolved 
>> external error:
>> WindowsApp1.obj : error LNK2019: unresolved external symbol 
>> "myCstruct.__init" (_D7myCStruct6__initZ) referenced in function _Dmain
>> Any idea what this is about and how to fix it? I'm wondering why D 
>> tries to find the __init function in the C library and not compile it 
>> from the import.
> __init is not a function, it's a static member variable. It's the 
> `intializer` property inside TypeInfo used for initialization.

Ah, ok. That's why the problem went (temporarly) away when I did a: 
myCstruct a = {0,0}; for example?

> Did you extern(C) the struct?

Yes, everything is "extern(C) :" for the complete import files.

> Are you compiling the D file that contains the struct definition as well?

No. Is that the missing part?

Robert M. Münch
smarter | better | faster

More information about the Digitalmars-d-learn mailing list