我正在 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 交互的每个操作之后添加了全面的错误检查。 已验证图像文件存在且可访问。
我也有同样的问题 :(
而且这很可能会被 stackoverflow 诸神删除 (他们喜欢移除东西)