C++/D class interop example crashes

Mike Parker aldacron at gmail.com
Sun Mar 28 03:42:48 UTC 2021


On Saturday, 27 March 2021 at 21:50:19 UTC, Jan wrote:
> On Saturday, 27 March 2021 at 18:39:53 UTC, Bastiaan Veelo 
> wrote:
>> The example links objects statically. You may be experiencing 
>> additional challenges with crossing DLL boundaries. I have not 
>> yet used DLLs, but did you initialise the D runtime?
>
> I haven't done anything extra (I'm pretty new to D). Do you 
> mean calling this from the D code before using writeln?
> https://dlang.org/phobos/core_runtime.html#initialize
>
> I would have thought that happens automatically anyway.

It should be in this case since the D code in the example is an 
application with a D main. The compiler will generate an 
extern(C) main that initializes the runtime and calls your D 
main. You have to initialize the runtime manually in three cases: 
you implement an extern(C) main yourself, you use WinMain instead 
of main, or you implement a shared library in D.

The problem most likely has to do with your use of a DLL rather 
than linking statically as in the example. D interfaces with C 
DLLs just fine, but given that C++ compatibility is limited, I 
would expect issues when interfacing with C++ DLLs.



More information about the Digitalmars-d-learn mailing list