I've also injected some dll's and when I recompiled them they seemed to crash the target program too.
this means that no C program will be able to load a dll written in D :s
the test I compiled was
import std.c.windows.windows;
import core.sys.windows.dll;

__gshared HINSTANCE g_hInst;

extern (Windows)
BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved)
{
    switch (ulReason)
    {
case DLL_PROCESS_ATTACH:
   g_hInst = hInstance;
   dll_process_attach( hInstance, true );
   break;

case DLL_PROCESS_DETACH:
   dll_process_detach( hInstance, true );
   break;

case DLL_THREAD_ATTACH:
   dll_thread_attach( true, true );
   break;

default:
   dll_thread_detach( true, true );
   break;
    }
    return true;
}

with dmd version 2.055
It used to work. is this a bug/regression? I'm going to upgrade my dmd to the newest level and try again