gpt4 book ai didi

visual-c++ - Windows 上的 SDL2 窃取了我的 stdout 和 stderr

转载 作者:行者123 更新时间:2023-12-04 06:37:56 25 4
gpt4 key购买 nike

所以我在 Windows 64 位上使用作为静态库构建的 SDL2。
SDL2 会阻止您的 stdout 和 stderr 到达控制台。

现在,我已经阅读了 FAQ在这一点上。
但:

  • NO_STDIO_REDIRECT 符号仅用于 SDL1.2,在 SDL2 中不使用。
  • freopen() 技巧在任何咒语中都不起作用。
  • 我将我的应用程序链接为控制台应用程序。
  • 我不链接 SDL2main 便利库。

  • 我在命令行上使用 2013 套件中的 Visual C。
    这是我的链接器调用:

    LINK.EXE/OUT:giver.exe/SUBSYSTEM:CONSOLE/NOLOGO c:/Users/bram/Desktop/src/opende/lib/Release/ode.lib C:/Users/bram/Desktop/src/SDL2-2.0。 3/VisualC/S
    DL/x64/Debug/SDL2.lib winmm.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib2.odbccp3 lib version.lib imm32.lib OpenGL32.lib sdlmain.obj gl3w.obj libpi.lib libbase.lib

    然而,我没有标准输出。
    我到底如何阻止 SDL2 窃取我的输出?

    最佳答案

    我创建了一个简单的 SDL2 程序并使用了 default x64 SDL2.0.3 VC .lib/.dll's可以从 libsdl.org 找到并设法在 Win7 x64 上使用 VS2013 进行编译,并使用 printf/SDL_Log 获得控制台输出。希望这会有所帮助。

    这是程序:

    #include <SDL2/SDL.h>
    #include <stdio.h>

    int main(int argc, char** argv)
    {
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window* window = SDL_CreateWindow("SDL2 Test",
    SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
    800, 600, SDL_WINDOW_SHOWN );

    SDL_Surface* screenSurface = SDL_GetWindowSurface(window);

    SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0x0c, 0xd6, 0xe8));
    SDL_UpdateWindowSurface(window);

    printf("printf: Hello World\n");
    SDL_Log("SDL_Log: Hello World\n");

    SDL_Delay(2500);

    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
    }

    这是我的编译方式(适当更改包含/链接目录):
    cl hello_SDL2.cpp /MD /I C:\vs_sdl\include /link C:\vs_sdl\lib\x64\SDL2.lib  C:\vs_sdl\lib\x64\SDL2main.lib /SUBSYSTEM:CONSOLE

    该程序会打开一个窗口几秒钟,并将以下内容输出到控制台:
    printf: Hello World
    SDL_Log: Hello World

    关于visual-c++ - Windows 上的 SDL2 窃取了我的 stdout 和 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28256676/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com