On Tuesday, 5 March 2019 at 04:32:57 UTC, evilrat wrote:
On Tuesday, 5 March 2019 at 03:48:22 UTC, Mike Parker wrote:
I stopped using WinMain with D a long time ago. It's not
necessary. If you always use `main`, then both linkers will
provide you with a console subsystem app by default. That's
particularly useful during development. You can add a
configuration to your dub.json that turns on the windows
subsystem for both linkers.
For OPTLINK (x86) you only need to pass to the linker
`/SUBSYSTEM:windows`.
For the MS linker (x86_mscoff, x86_64) you need to that and
you need to specify that the entry point is `main`, because it
will expect `WinMain` when you specify the windows subsystem.
You can do that with `/ENTRY:mainCRTStartup`
https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=vs-2017
https://docs.microsoft.com/en-us/cpp/build/reference/entry-entry-point-symbol?view=vs-2017
All of this should be added on dub docs with small snippets and
explanation as a section dedicated to Windows and maybe even on
D docs as well, because you know, it shows up again and again
from time to time
This has nothing to do with dub, so that’s the wrong place for
it. The dmd for windows docs needs to make clear the distinction
between the linkers and the differences in behavior, and point to
the linked docs for options. I just checked the Optlink page and
didn’t see /subsystem documented, so that needs to be fixed. I’ll
put it on my todo list.