【问题标题】:Printf is not printing anything to output? C++ SDLPrintf 没有打印任何要输出的内容? C++ SDL
【发布时间】:2012-06-17 02:48:22
【问题描述】:

我试图在我的 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).

就是这样。有什么问题?

【问题讨论】:

  • 通常0 表示成功。尝试接受任何输入(或)在 return 语句处保留一个断点。
  • @Mahesh 我尝试在使用 printf 期间设置断点,但仍然没有输出。 :(
  • Visual Studio 中的输出窗口!= stdout 或 stderr。
  • @ta.speot.is 有没有办法在 Visual Studio 中查看输出?
  • 尝试将'ugly' getch() 放在return 语句之前以查看控制台输出。一个不那么“丑陋”的方法是在return 语句之前使用char c; std::cin&gt;&gt;c;。查看输出的另一种(更好的)方法是从命令行运行可执行文件。

标签: c++ visual-c++ sdl printf


【解决方案1】:

Printf 通常需要换行符来更新控制台。在末尾添加一个 '\n' 字符并重新运行程序。

【讨论】:

  • 遗憾的是仍然没有输出!我想知道是什么原因造成的。非常荒谬。
【解决方案2】:

尝试定义 NO_STDIO_REDIRECT。

#define NO_STDIO_REDIRECT

如果这不起作用,请尝试以下链接中的解决方案:How can I get console output instead of stdout.txt and stderr.txt?

【讨论】:

  • 这仅适用于 SDL1.2,不适用于 SDL2。当您搜索 SDL2 的源代码时,您会看到该符号未被使用。
【解决方案3】:

默认情况下,SDL 将标准输出重定向到文件 stdout.txt。您应该在程序的工作目录中找到它。

【讨论】:

  • 谢谢。该文件在 Visual C++ 项目 Debug 文件夹中创建,包含我调用的所有“std::cout”函数。
【解决方案4】:

打开项目属性,转到链接器->系统->子系统并将其更改为第三个选项,CONSOLE。应该这样做

【讨论】:

    【解决方案5】:

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

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

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

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

    void WINAPI OutputDebugString(
      __in_opt  LPCTSTR lpOutputString
    );
    

    标题 WinBase.h(包括Windows.h

    【讨论】:

      【解决方案6】:

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

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

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

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

      【讨论】:

      • 在return语句下下断点,不知道到哪里找控制台。当按下 Ctrl+F5 时,Output 视图仍然是空的,但是当我只使用 F5 时,输出会显示构建日志和调试日志,其中包含以下内容:pastebin.com/UKWpCKsD 所有 PDB 错误都在其中起作用吗?
      • 您看到的 PDB 错误无关紧要。检查 printf 的返回值。它返回已打印的字符数。 printf 在单独的控制台窗口中输出字符,而不是在输出视图中。
      • 如何访问单独的控制台窗口?
      • 当您执行 Ctrl+F5 时,将打开一个控制台窗口。检查你的任务栏。
      • 从未打开任何控制台。它只是输出窗口。
      【解决方案7】:

      在项目属性中的 Linker -&gt; System 中,检查 SubSystem 是否为 "Console (/SUBSYSTEM:CONSOLE)"

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          猜你喜欢
          • 2021-11-07
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-07-23
          • 2021-02-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多