错误程序退出,代码为-1073741819 - DerelictSDL2

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

我正在 D 中使用 SDL2 和 SDL2_image 开发一个应用程序,当我尝试运行我的程序时遇到访问冲突错误 -1073741819。我在下面包含了相关代码。当我尝试初始化 SDL2_image 或创建窗口时会发生错误,但我不确定具体是哪个部分导致问题。

import std.stdio;
import derelict.sdl2.sdl;
import derelict.sdl2.image;

void main() {
    // Load SDL2 dynamically
    DerelictSDL2.load();

    // Initialize SDL_image for JPG support
    if (IMG_Init(IMG_INIT_JPG) & (IMG_INIT_JPG != IMG_INIT_JPG)) {
        writeln("Failed to initialize SDL_image: ", SDL_GetError());
        return;
    }

    // Initialize SDL
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        writeln("Failed to initialize SDL: ", SDL_GetError());
        return;
    }

    // Create window
    SDL_Window* window = SDL_CreateWindow("Hello SDL2",
                                          SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                          500, 500, SDL_WINDOW_SHOWN);
    if (!window) {
        writeln("Failed to create window: ", SDL_GetError());
        SDL_Quit();
        return;
    }

    // Create renderer with hardware acceleration and synchronized with the refresh rate
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (!renderer) {
        writeln("Failed to create renderer: ", SDL_GetError());
        SDL_DestroyWindow(window);
        SDL_Quit();
        return;
    }

    // Load image and create texture
    SDL_Surface* image = IMG_Load("fdcae74b5ad91e309aa03020c7ea4f26.jpg");
    if (!image) {
        writeln("Failed to load image: ", SDL_GetError());
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(window);
        SDL_Quit();
        return;
    }
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, image);
    if (!texture) {
        writeln("Failed to create texture: ", SDL_GetError());
        SDL_FreeSurface(image);
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(window);
        SDL_Quit();
        return;
    }

    // Event handling loop
    SDL_Event event;
    bool running = true;
    while (running) {
        while (SDL_PollEvent(&event) != 0) {
            if (event.type == SDL_QUIT) {
                running = false;
            }
        }
    }

    // Clean up
    SDL_DestroyTexture(texture);
    SDL_FreeSurface(image);
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
}

我已确保所有库均已正确安装并且路径已正确配置。 在与 SDL 交互的每个操作之后添加了全面的错误检查。 已验证图像文件存在且可访问。

windows sdl d
1个回答
0
投票

我也有同样的问题 :(

而且这很可能会被 stackoverflow 诸神删除 (他们喜欢移除东西)

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