如何隐藏 Windows 程序的控制台 window?
How can one hide the console window of a Windows program?
我正在使用 wxWidget 框架。当我设置 System/Subsystem: Console (/SUBSYSTEM:CONSOLE)
时,我的程序将启动,但会同时显示 GUI 和控制台。这是它的样子:https://i.stack.imgur.com/G83PR.png
当我更改 System/Subsystem: Windows (/SUBSYSTEM:WINDOWS)
然后它显示错误:
LNK2019 unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
这是我的代码:
int main(int argc, char** argv) {
Gui_AutoPokemon* gui = new Gui_AutoPokemon();
wxApp::SetInstance(gui);
mainArgc = argc;
mainArgv = argv;
return wxEntry(argc, argv);
}
如何隐藏控制台window?
GUI Windows 程序使用与控制台不同的入口点函数。您使用 /SUBSYSTEM:WINDOWS
是正确的,但是您需要更改为使用 WinMain
:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR cmdLine, int nCmdShow) {
....
然后使用适当的wxEntry
重载:
return wxEntry(hInstance, NULL, cmdLine, nCmdShow);
我建议打电话给 FreeConsole()
。它将控制台与任何 window 分离。作为我的应用程序的示例:
我正在使用 wxWidget 框架。当我设置 System/Subsystem: Console (/SUBSYSTEM:CONSOLE)
时,我的程序将启动,但会同时显示 GUI 和控制台。这是它的样子:https://i.stack.imgur.com/G83PR.png
当我更改 System/Subsystem: Windows (/SUBSYSTEM:WINDOWS)
然后它显示错误:
LNK2019 unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
这是我的代码:
int main(int argc, char** argv) {
Gui_AutoPokemon* gui = new Gui_AutoPokemon();
wxApp::SetInstance(gui);
mainArgc = argc;
mainArgv = argv;
return wxEntry(argc, argv);
}
如何隐藏控制台window?
GUI Windows 程序使用与控制台不同的入口点函数。您使用 /SUBSYSTEM:WINDOWS
是正确的,但是您需要更改为使用 WinMain
:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR cmdLine, int nCmdShow) {
....
然后使用适当的wxEntry
重载:
return wxEntry(hInstance, NULL, cmdLine, nCmdShow);
我建议打电话给 FreeConsole()
。它将控制台与任何 window 分离。作为我的应用程序的示例: