使用mingw在win32上使用C printf()

LGB加博尔·勒纳特

我在Linux上开发了一个有趣的SDL2应用程序,但是即使没有进行测试,我也为非Linux用户构建Windows版本(我根本没有Windows,也从未拥有Windows)。为此,我使用mingw进行交叉编译。一切都很好,但只有一件事。该应用程序还具有一些命令行开关/消息/帮助,以及在C语言中使用简单的printf()的功能。但是,根据用户的说法,这根本无法在Windows上运行,也不会显示任何输出。我发现了这一点:setvbuf (stdout, NULL, _IONBF, 0);但这并没有帮助。此外,我-mwindows在各种文档中发现了mingw的切换,-mconsole但是由于我不太了解Windows,所以我不知道在这个对我来说陌生的系统(Windows)上应该如何工作。基本上,我希望使用与Linux类似的解决方案:如果从终端窗口启动,则可以看到标准输出,但是如果没有,则根本看不到它们,这些消息等都不会打开/显示。

海藻油

我知道没有Windows替代品具有与Linux程序相同的行为。

如果没有-mwindows(除了许多其他事情),您的输出将定向到stdout并以cmd显示(并可以通过管道将其路由到其他进程stdin),但是如果您不使用cmd运行它-它将打开一个额外的控制台窗口用于输出。

随着-mwindowsstdio不再链接到控制台。您仍然可以重定向输出,但看不到它(例如,your_program.exe | cat将显示输出,但cat在标准窗口中没有显示)。但是,此模式不会自动打开控制台窗口。您可以手动创建控制台(或继承父进程的控制台),然后将stdout重定向到该控制台(使用freopen("CONOUT$", "w", stdout)),但这不是“ true” stdio,也无法将其通过管道传递给其他进程(这可能对您仍然合适) 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章