启动用D编写的程序时如何不打开控制台

时间:2017-08-27 23:53:18

标签: windows user-interface d windows-console ldc

我在D.编写应用程序。使用dub配置(目标类型:可执行文件)使用ldc2编译器编译。编译后的程序创建了一个控制台窗口,由于应用程序使用GUI框架,因此我不需要该窗口。我需要一种方法来阻止创建控制台窗口。

我所知道的另一个具有类似行为的例子是使用mingw64-gcc编译C / C ++程序时,它具有-mwindows标志。我对D节目一无所知。 dub配置和ldc编译器标志似乎都没有做我想要的。有谁知道该怎么办?如果它至少做到我想要的话,即使是另一个编译器也可以工作。

从CMD或PowerShell打开应用程序时,不会打开其他控制台。只有从Windows GUI启动应用程序时才会出现此问题。

dub.json:

{
    description (author etc.)
    "targetType": "executable",
    "platforms": [
        "windows"
    ],
    "dependencies": {
     ....
    },
    "versions" : [
     ....
    ],
    "libs" : [
     ....
    ],
    "dflags": [
        "-m32",
        "-static",
        "-release"
    ]
}

编译命令:

dub run --compiler=ldc2.exe

解决方案

在dub.json

中添加链接器标志,如下所示
"lflags":[
   "-subsystem:windows",
   "-entry:mainCRTStartup"
]

如果程序未从另一个控制台运行,则会删除在程序启动时弹出的控制台。它还支持通常的d main(void main()等),不需要winmain入口点。 (如果您只是将条目标志退出,则可以使用)

1 个答案:

答案 0 :(得分:1)

您需要添加

"lflags": ["-Subsystem:Windows"]

到你的dub.json文件,告诉ldc创建一个Window UI二进制文件。要使用的命令行选项为ldc2 -L=-Subsystem:Windows