即使从 Windows 控制台启动,Mingw 控制台应用程序也会打开一个单独的控制台窗口

问题描述 投票:0回答:1

最近,我尝试使用 Linux 上的 Mingw 为 Windows 操作系统编译一个简单的控制台 hello world 应用程序:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
   for(int i = 0; i < 10; i++) {
      printf("i = %d\n", i);
      sleep(1);
   }
}
$ i686-w64-mingw32-gcc hello.c -o hello.exe -mconsole

令我惊讶的是,当我从 Windows 控制台 (cmd.exe) 运行它时,它会创建一个单独的控制台窗口,而不是将我的标准输出消息打印到同一控制台窗口。更糟糕的是,我在任何地方都找不到问题的描述,即使在这里也是如此。为了进行比较,我尝试从 Windows 控制台运行第 3 方控制台程序 (usbip.exe),但正如我预期的那样,它的工作非常顺利。

这种行为是我的 Mingw-W64 C 标准库版本中的一种错误还是某种预期?有什么办法可以摆脱这种烦人的行为吗?

更新。有人建议在编译过程中省略

-mconsole
。不幸的是,它的工作方式完全相同。我什至尝试过
-mwindows
,这样它不会打开一个新的控制台窗口,但也不会在我的控制台窗口中打印任何内容(实际上,正如运行属于到
-mwindows
子系统)。

c mingw-w64
1个回答
0
投票

搞乱了一段时间,原来是Windows Defender相关的问题。我用 Windows 尚不知道的另一个文件名编译了另一个控制台 hello world 程序,这次它按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.