当我运行c++程序时,我不希望控制台出现
I dont want console to appear when i run c++ program
我想写一个c++程序,编译并链接.cpp给出的.exe文件。如果我双击它并执行它,控制台就会打开和关闭。我根本不想让那个控制台出现。请帮忙。
Windows程序有两种方法来生成控制台窗口:
-
该程序链接为控制台子系统exe,这是对Windows的一个请求,要求始终提供一个关联的控制台窗口。
-
程序的代码本身创建了一个控制台窗口。
到目前为止,第一个选项控制台子系统是最有可能的。
使用MinGW g++编译器只需添加选项
-mwindows
使用Visual C++编译器,如果您是从命令行进行编译,请添加选项
/link /subsystem:windows /entry:mainCRTStartup
如果使用Visual Studio,请将子系统更改为windows,并在链接器选项中将入口点更改为mainCRTStartup
。
使用微软的编译器,可以更容易地与包含WinMain
函数的模块链接,该函数本身就是一个非标准的启动函数,并且违反C++标准调用普通标准main
。这是因为对于GUI子系统(子系统"windows"),微软的编译器,与g++相反,默认情况下不会识别标准main
。这只是微软的一件事(大概是从供应商锁定开始的)。
如果您想创建一个带有隐藏控制台的控制台类型程序,那么将其作为主例程的第一行:
ShowWindow( GetConsoleWindow(), SW_HIDE );
听起来你需要更新你的Windows Visual Studio项目设置,使其成为一个控制台应用程序。
如果不是这样,那么请发布更多关于您的环境和工具的信息。
较弱的先决条件:
如果您的程序没有控制台子进程,只需FreeConsole();
应该这样做。
其他
需要一个(隐藏的)窗口,这样子进程就不会弹出控制台,即上面提到的
ShowWindow (GetConsoleWindow(), SW_HIDE);
确保在编译和链接期间定义_WINDOWS
或WINDOW
。(取决于您的环境)。
在命令行上,您可以按照以下进行操作
cl -D_WINDOWS program.cpp
在CODEBLOCKS上,除了@ravenspoint所说的,你还必须把这一行放在你的第一行代码上:
#define _WIN32_WINNT 0x0501 //this is for XP
然后:
ShowWindow (GetConsoleWindow(), SW_HIDE);
如果因为有时可能需要使用控制台进行输出而无法移动到Window应用程序(我指的是GUI),则可以使用以下代码隐藏控制台窗口:
HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- C++控制台应用程序阻止退出
- 如何修复此iFile以将.txt输出到控制台
- 为什么控制台要求输入,即使代码中没有输入
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 控制台输出在 Qt5 中未正确显示
- C++出现控制台错误.我无法识别源代码的问题
- C++程序不会从 Windows 控制台运行
- 我希望定义两个具有相同代码的不同名称的库
- 有人可以向我解释为什么控制台输出 0 吗?
- 我希望改进或要求我目前的延迟/睡眠方法。C++
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 视觉我希望一个函数在另一个函数C++中进行计算
- Win32 API 控制台光标在 WriteConsole 后不移动
- 如何获取控制台窗口的宽度?
- 当我运行c++程序时,我不希望控制台出现