我不希望在运行c++;程序 我想写一个C++程序,编译和链接。CPP给出.exe文件。如果我双击它并执行它,控制台就会打开和关闭。我根本不想让那个控制台出现。请提供帮助。

我不希望在运行c++;程序 我想写一个C++程序,编译和链接。CPP给出.exe文件。如果我双击它并执行它,控制台就会打开和关闭。我根本不想让那个控制台出现。请提供帮助。,c++,windows,C++,Windows,听起来您需要更新Windows Visual Studio项目设置,使其不是控制台应用程序 如果情况并非如此,请发布有关您的环境和工具的更多信息。如果您无法移动到窗口应用程序(我指的是GUI),因为有时您可能需要使用控制台进行输出,您可以使用以下代码隐藏控制台窗口: HWND hWnd = GetConsoleWindow(); ShowWindow(hWnd, SW_HIDE); 如果要创建带有隐藏控制台的控制台类型程序,请将其作为主例程的第一行: ShowWindow( GetConsol

听起来您需要更新Windows Visual Studio项目设置,使其不是控制台应用程序


如果情况并非如此,请发布有关您的环境和工具的更多信息。

如果您无法移动到窗口应用程序(我指的是GUI),因为有时您可能需要使用控制台进行输出,您可以使用以下代码隐藏控制台窗口:

HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);

如果要创建带有隐藏控制台的控制台类型程序,请将其作为主例程的第一行:

ShowWindow( GetConsoleWindow(), SW_HIDE );

确保在编译和链接期间定义了
\u窗口
窗口
。(取决于您的环境)

在命令行上,您可以按如下方式执行此操作

cl -D_WINDOWS  program.cpp

Windows程序有两种生成控制台窗口的方法:

HWND hWnd = GetConsoleWindow();
ShowWindow(hWnd, SW_HIDE);
  • 该程序作为控制台子系统exe链接,这是对Windows的请求,以始终提供关联的控制台窗口

  • 程序代码本身创建一个控制台窗口

第一个选项,控制台子系统,到目前为止是最有可能的

使用MinGW g++编译器,只需添加选项

-mwindows

使用VisualC++编译器,如果从命令行编译,添加选项

/link /subsystem:windows /entry:mainCRTStartup
如果是,请将子系统更改为windows,并在链接器选项中将入口点更改为
mainCRTStartup


<> P>微软的编译器可以更方便地与包含<代码> Win MeST/代码>函数的模块链接,该函数本身是非标准启动函数,违反C++标准调用普通标准<代码>主< /代码>。这是因为在GUI子系统(子系统“windows”)中,微软的编译器与g++不同,默认情况下不识别标准的
main
。这只是一个微软的东西(大概是从供应商锁定开始的)。

关于代码块,除了@ravenspoint所说的,你必须在你的第一行代码中放上这一行:

#define _WIN32_WINNT 0x0501 //this is for XP
然后:

ShowWindow (GetConsoleWindow(), SW_HIDE);
较弱的先决条件:

如果您的程序没有控制台子进程,只需
FreeConsole()应该这样做

否则

需要一个(隐藏)窗口,以避免子进程中出现控制台弹出窗口,即如上所述


ShowWindow(GetConsoleWindow(),SW_HIDE)

p如果您同时拥有main和winmain方法?
code
#include int main(){如果不在控制台中,您希望“hahahaaa”出现在哪里?如果我注释掉“cout”和“include”另外。控制台正在出现。不,这里用户也可以看到控制台的进出。如何运行该应用程序?从另一个应用程序?通过用户双击?使用CreateProcess运行“控制台”应用程序,在STARTUPINFO结构中设置STARTF_USESHOWWINDOW标志,并为wShowWindow设置SW_HIDE。(无论如何,如果你不想显示控制台,你真的必须创建一个控制台应用程序吗?)[Que](无论如何,你真的必须创建一个控制台应用程序,如果你不想显示控制台?)[\Que]我不想用Visual C++工作。我不能写一个没有VC++的C++程序,它允许沉默执行。(我不想让控制台出现)。在VisualC++中,我相信这是正确的。@阿尔夫。我同意,你的答案是正确的和完整的。我们之所以有这么长的线程,唯一的原因是“大概是作为一个供应商锁定的东西开始的”。注释。它咬了我一口,所以在这里注意到,
-mwindwos
从技术上讲是一个链接器选项。@legends2k:是的,它基本上会将
-subsystem=windows
传递给链接器。这可以通过g++选项
-Wl,-subsystem=windows
来实现。或者,虽然我在编写之前快速测试了记住的选项,但我看到了链接器的帮助没有指定
=
符号。所以可能更准确地说,它会将
-子系统窗口
传递给链接器,您可以通过g++选项
-Wl,-子系统,窗口
。希望如此。:)7年后,您减轻了我生活中的一点压力。