Printf 没有打印任何内容来输出? C++ SDL

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

我尝试在我的 Visual C++ 项目中使用“printf”,但它不起作用。使用 Lazy Foo 的教程,我在项目中设置了 SDL,但是当我播放它时,printf 没有执行任何操作。

#include "SDL.h"
#include <stdio.h>

int main( int argc, char* args[] ) {
    printf("Testing");
    return 0;
}

输出如下所示:

The program '[4664] SDL Testing.exe: Native' has exited with code 0 (0x0).

就是这样。可能出了什么问题?

c++ visual-c++ sdl printf
9个回答
19
投票

调出项目属性,转到链接器->系统->子系统并将其更改为第三个选项 CONSOLE。这样应该就可以了


10
投票

SDL 默认情况下将 stdout 重定向到文件

stdout.txt
。您应该在程序的工作目录中找到它。


8
投票

在项目属性的

Linker -> System
中,检查子系统是否为
"Console (/SUBSYSTEM:CONSOLE)"

这会导致在您运行程序时显示一个单独的控制台窗口。如果您当前的入口点不是主要的,那么您需要将其更改为该入口点。


6
投票

一切正常,我什至在屏幕上显示了图像,但如果没有某种方式输出消息,我就无法编程

我认为这意味着您有一个可用的窗口,而不是控制台。

如果您想将某些内容记录到输出窗口,请使用

OutputDebugString
:

将字符串发送到调试器进行显示。

void WINAPI OutputDebugString(
  __in_opt  LPCTSTR lpOutputString
);

标题

WinBase.h
(包括
Windows.h


4
投票

Printf 通常需要换行符来更新控制台。添加一个' ' 字符结束并重新运行程序。


3
投票

尝试定义 NO_STDIO_REDIRECT。

#define NO_STDIO_REDIRECT

如果这不起作用,请尝试此链接中的解决方案:如何获取控制台输出而不是 stdout.txt 和 stderr.txt?.


0
投票

您可能看不到输出,因为您是通过按 F5 从 Visual Studio 中运行程序,并且控制台窗口在程序退出后关闭。

您可以做以下三件事之一 -
在 return 语句处放置断点。
在 return 语句之前放置 getchar() 语句。
按 Ctrl+F5 而不是 F5 来运行程序。

以上所有内容都会导致控制台窗口保留在屏幕上。

您也可以从命令提示符(cmd.exe)直接运行 EXE。


0
投票

我刚刚在尝试编写一个简单的控制台时遇到了这个问题,我的解决方法是添加一个

fflush(stdout)

printf("Hello world!\n");
fflush(stdout);

-4
投票

当您运行/调试程序时,有一个 Visual Studio 的输出窗口。您应该能够在该窗口中看到输出。

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