C++ SDL2 无法加载任何文件

C++ SDL2 can't load any file

我正在使用 SLD2 来制作游戏,从现在开始一切正常。 我认为加载文件系统有问题。 例如,当我尝试加载 bmp 时:

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

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_VIDEO);  // Initialize SDL2
    SDL_Window* window = SDL_CreateWindow("game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                          1000, 500, SDL_WINDOW_OPENGL);

    SDL_Renderer* render = SDL_CreateRenderer(window, -1, 0);

    SDL_Surface* image = SDL_LoadBMP("../background.bmp");
    printf(SDL_GetError());

    return 0;
}

SLD_GetError() 函数 return: couldn't load ( some random weird chars) SDL 混音器也一样

似乎任何 SDL2 功能都无法加载任何文件(或任何类型的文件)... 为什么?

(exe在子目录下,后台路径正确) here is a screenshot

SDL2没有问题。您输入的路径可能无效,因为它显示“couldn't load ( some random weird chars )”,这意味着 SDL 无法找到该文件。您正在使用 ../ 表示您的 background.bmp 文件位于当前工作目录的父目录中。如果您使用 IDE 然后构建它,SDL 期望该文件位于项目文件夹的父目录中。如果您然后 运行 可执行文件,它希望该文件位于可执行文件的父目录中。所以尝试使用绝对路径,例如 C:\users\path-to-file\background.bmp。如果您使用该路径系统,无论您的可执行文件位于何处或您在何处构建程序,SDL 始终会在给定路径中搜索 background.bmp

还要注意转义序列。使用 \ 作为反斜杠。或者你可以只使用 /.