On Thursday, 25 February 2016 at 14:42:14 UTC, Thalamus wrote:
your entry point.
Hi Guillaume,
Thanks for responding so quickly! I had found that wiki page
before and I'd been following the "DLLs with a C Interface"
section closely. I had forgotten to add -shared when building
the DLL, but the behavior didn't change when I added it. So, I
added a call to Runtime.initialize() as the first line of the
endpoint I'm exposing. (I also made sure that this was the only
endpoint invoked and that it was only invoked once just to be
cautious.) I can see Runtime.initialize() being called, but the
Class A shared static constructor still is not called when run
from the C# EXE.
Do you have any other ideas?
In the meantime, I'm working on putting together a minimal
repro source, but the scenario is a bit complicated so there's
a lot of details to whittle away.
thanks!
Gene
You shouldn't be calling Runtime.initialize() manually. Just do
the following in one of your source files:
import core.sys.windows.dll;
mixin SimpleDllMain;
This will generate a DllMain that will correctly initialize and
deinitialize druntime.
Kind Regards
Benjamin Thaut