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