如何在启动用 D 编写的程序时不打开控制台
How to not open a console when starting program written in D
我正在用 D 编写一个应用程序。它是使用 dub 配置(目标类型:可执行文件)使用 ldc2 编译器编译的。编译后的程序创建了一个控制台 window,我不需要它,因为该应用程序使用 GUI 框架。我需要一种方法来防止创建控制台 window.
我所知道的具有类似行为的唯一其他示例是使用 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 入口点。 (如果你简单地离开入口标志就可以使用)
您需要添加
"lflags": ["-Subsystem:Windows"]
到您的 dub.json
文件,告诉 ldc 创建一个 Window UI 二进制文件。要使用的命令行选项是 ldc2 -L=-Subsystem:Windows
.
我正在用 D 编写一个应用程序。它是使用 dub 配置(目标类型:可执行文件)使用 ldc2 编译器编译的。编译后的程序创建了一个控制台 window,我不需要它,因为该应用程序使用 GUI 框架。我需要一种方法来防止创建控制台 window.
我所知道的具有类似行为的唯一其他示例是使用 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 入口点。 (如果你简单地离开入口标志就可以使用)
您需要添加
"lflags": ["-Subsystem:Windows"]
到您的 dub.json
文件,告诉 ldc 创建一个 Window UI 二进制文件。要使用的命令行选项是 ldc2 -L=-Subsystem:Windows
.