| |
| Posted by Mike Parker in reply to Marcone | PermalinkReply |
|
Mike Parker
Posted in reply to Marcone
| On Tuesday, 10 August 2021 at 19:03:06 UTC, Marcone wrote:
> On Tuesday, 10 August 2021 at 19:01:42 UTC, Adam D Ruppe wrote:
>> On Tuesday, 10 August 2021 at 18:59:33 UTC, Marcone wrote:
>>> Using -Lgdi32.lib -Luser32.lib? Same error.
>>
>> The part after that:
>>
>> If you want the Windows subsystem too, use -L/subsystem:windows -L/entry:mainCRTStartup.
>>
>>
>> Pass BOTH -L/subsystem:windows AND -L/entry:mainCRTStartup
>
> Good! work very well! Thank you!
The difference is because DMD uses different linkers on Windows.
By default, it links 32-bit programs with OPTLINK. That linker only requires the subsystem flag---it will recognize that you have a `main` function.
When compiling with -m32mscoff or -m64, it uses the Microsoft linker. That linker requires that you also specify the program entry function---it always expects `WinMain`, and the `mainCRTStartup` tells it to look for `main` instead.
|