我在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入口点。 (如果您只是将条目标志退出,则可以使用)
答案 0 :(得分:1)
您需要添加
"lflags": ["-Subsystem:Windows"]
到你的dub.json
文件,告诉ldc创建一个Window UI二进制文件。要使用的命令行选项为ldc2 -L=-Subsystem:Windows
。