SDL2 在 Windows 上没有控制台输出

Ara*_*ins 2 c++ windows stdout cmake sdl-2

我已经尝试了我能想到的一切。我只是无法让 SDL2 向控制台输出任何内容。Windows PowerShell 和命令提示符均不显示输出。也没有 stdout.txt 文件。cout, cerr, SDL_Log("..."), 没有作用。

#define NO_STDIO_REDIRECT
#include <iostream>
#include "SDL.h"

using namespace std;

int main(int argc, char** args){
    if (SDL_Init(SDL_INIT_VIDEO) != 0){
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    SDL_Log("Hello World");


    SDL_Quit();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt:

message(STATUS "Print Test, CMAKE_SOURCE_DIR: " ${CMAKE_SOURCE_DIR})
cmake_minimum_required(VERSION 3.7)
project(testproject)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
#set(CMAKE_MODULE_PATH cmake/FindSDL2.cmake)
#set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

find_package(SDL2 REQUIRED)
include_directories(testproject ${SDL2_INCLUDE_DIRS})

add_executable(testproject src/main.cpp)
target_link_libraries(testproject ${SDL2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

使用 GCC 4.8.3 (MinGW i686 Win-Builds 1.5)

小智 5

不确定它是否仍然与您相关,但您是否尝试过No stdout.txt with SDL 中的答案?

我使用了 MSYS2/MinGW-w64 中的 SDL 2,其中pkg-config设置了-mwindows标志,这导致在从命令提示符运行时丢弃stdout/ stderr(但不是 MSYS2 本身)。离开-mwindows国旗有帮助。