www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - -L/SUBSYSTEM:windows Error when using -m64

reply Marcone <marcone email.com> writes:
How use -L/SUBSYSTEM:windows for hide console in x64 prograns? 
Becouse if I use -L/SUBSYSTEM:windows and -m64 I get this error:

lld-link: error: undefined symbol: WinMain
 referenced by msvcrt120.lib(msvcrt_stub2.obj):($LN5)
Error: linker exited with status 1 If I delete -L/SUBSYSTEM:windows compile fine. How can I hide console using -m64?
Aug 10 2021
parent reply Adam D Ruppe <destructionator gmail.com> writes:
On Tuesday, 10 August 2021 at 18:34:03 UTC, Marcone wrote:
 How can I hide console using -m64?
http://dpldocs.info/experimental-docs/arsd.simpledisplay.html#installation-instructions
Aug 10 2021
parent reply Marcone <marcone email.com> writes:
On Tuesday, 10 August 2021 at 18:36:27 UTC, Adam D Ruppe wrote:
 On Tuesday, 10 August 2021 at 18:34:03 UTC, Marcone wrote:
 How can I hide console using -m64?
http://dpldocs.info/experimental-docs/arsd.simpledisplay.html#installation-instructions
Hi, do you have some other solution without arsd.simpledisplay? I want only dmd feature.
Aug 10 2021
parent reply Adam D Ruppe <destructionator gmail.com> writes:
On Tuesday, 10 August 2021 at 18:45:35 UTC, Marcone wrote:
 Hi, do you have some other solution without arsd.simpledisplay? 
 I want only dmd feature.
Did you read the paragraph under the link? That IS a dmd switch. Or a ldc switch. It explains the concept which works with anything.
Aug 10 2021
parent reply Marcone <marcone email.com> writes:
On Tuesday, 10 August 2021 at 18:51:28 UTC, Adam D Ruppe wrote:
 On Tuesday, 10 August 2021 at 18:45:35 UTC, Marcone wrote:
 Hi, do you have some other solution without 
 arsd.simpledisplay? I want only dmd feature.
Did you read the paragraph under the link? That IS a dmd switch. Or a ldc switch. It explains the concept which works with anything.
Using -Lgdi32.lib -Luser32.lib? Same error.
Aug 10 2021
parent reply Adam D Ruppe <destructionator gmail.com> writes:
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
Aug 10 2021
parent reply Marcone <marcone email.com> writes:
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!
Aug 10 2021
parent Mike Parker <aldacron gmail.com> writes:
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.
Aug 10 2021