On Saturday, 4 February 2023 at 16:51:36 UTC, Richard (Rikki) Andrew Cattermole wrote:
You don't have access to druntime/Phobos stuff at runtime.

SimpleDllMain is for initializing and uninitializing druntime.

See: https://github.com/Project-Sidero/basic_memory/blob/main/source/sidero/base/dllmain.d

You want to only use ldc atm. The defaults right now should most likely "just work" in dub for a single compile + link step (i.e. only a single static library in dll).

If you do it manually, you'll want to add the flag ``--fvisibility=public`` to export everything.

I'm not sure I understand every bit of it yet, but this looks helpful, thank you.

I was able to compile this (based on dllmain.d linked by you) with both DMD and LDC:

```D
module WindowsApp1;

version (Windows)
{
    version (D_BetterC)
    {
import core.sys.windows.windef : HINSTANCE, BOOL, DWORD, LPVOID;

extern (Windows) BOOL DllMain(HINSTANCE hInstance, DWORD ulReason, LPVOID reserved)
        {
            return true;
        }
    }
    else
    {
        import core.sys.windows.dll;

        mixin SimpleDllMain;
    }
}

export extern (C) void foo()
{
    import core.stdc.stdio : printf;

    printf("Hello betterC\n");
}
```

What's the reason to prefer LDC over DMD?
  • betterC DLL in W... Tamas via Digitalmars-d-learn
    • Re: betterC... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: bet... Tamas via Digitalmars-d-learn
        • Re:... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
        • Re:... bachmeier via Digitalmars-d-learn
          • ... Tamas via Digitalmars-d-learn
    • Re: betterC... Adam D Ruppe via Digitalmars-d-learn
      • Re: bet... Tamas via Digitalmars-d-learn
        • Re:... Adam D Ruppe via Digitalmars-d-learn
          • ... Tamas via Digitalmars-d-learn
            • ... bachmeier via Digitalmars-d-learn
              • ... Adam D Ruppe via Digitalmars-d-learn
            • ... Adam D Ruppe via Digitalmars-d-learn

Reply via email to