Dll crash in simplest case

evilrat evilrat666 at gmail.com
Mon Jan 25 12:26:38 UTC 2021


On Monday, 25 January 2021 at 11:30:45 UTC, Vitalii wrote:
> On Monday, 25 January 2021 at 10:26:20 UTC, frame wrote:
>> [...]
>
> Yes. I'm doing it whet add dll.d 
> (https://wiki.dlang.org/Win32_DLLs_in_D) in compile line, it 
> contents:
> ---
> import core.sys.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;
>
> 	case DLL_THREAD_DETACH:
> 	    dll_thread_detach( true, true );
> 	    break;
>
>         default:
>     }
>     return true;
> }
> ---

try replacing this with mixin SimpleDllMain (it initializes 
runtime for you IIRC). Runtime.LoadLibrary() is expected to call 
rt_init too, but Windows support for shared libs is too far from 
good.


More information about the Digitalmars-d-learn mailing list