module foo; export extern(C) void foo() { import core.stdc.stdio; printf("Hello, World!\n"); } version (Windows) { import core.sys.windows.windows; import core.sys.windows.dll; extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved) { switch (ulReason) { default: break; case DLL_PROCESS_ATTACH: 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; } return true; } }