-L/SUBSYSTEM:windows Error when using -m64

Mike Parker aldacron at gmail.com
Wed Aug 11 03:08:39 UTC 2021


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.


More information about the Digitalmars-d-learn mailing list