SDL_image.h fatal error: No such file or directory

SDL_image.h fatal error: No such file or directory

我正在使用 Debian,并且我已成功下载 SDL_image.h。 (sudo apt-get install libsdl2-image-dev)

我写了一个简单的代码来判断它是否看到 PNG 图像,但是我收到了一个错误。

代码:

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


int main(){
    if (SDL_Init(SDL_INIT_VIDEO) < 0) printf("ERROR SDL_Init() - VIDEO");
    if (IMG_Init(IMG_INIT_PNG) < 0) prinft("ERROR IMG_Init() - PNG");
    
    char fileName[50] = "im.PNG";
    SDL_Texture *image = IMG_Load(fileName);
    if (image == NULL) printf("ERROR image == NULL");

    SDL_FreeSurface(image);
    return 0;
}

我在命令行编译如下

gcc SDL_learnT.c -w -lSDL2 -o SDL_learnT

我收到错误 =“致命错误:SDL_image.h 没有这样的文件或目录”

我尝试执行以下操作但结果没有改变 #include 或 #include

编辑:从您最近的编辑看来,您已经[已经]解决了您的问题,因此以下内容可能没有实际意义。


安装 SDL2_image 的开发包 [你似乎已经完成了——叹息]。

在软呢帽上,这是:

sudo dnf install SDL2_image-devel

在 ubuntu:

sudo apt install libsdl2-image-dev

gcc行中使用pkg-config(例如):

gcc -o program program.c `pkg-config --cflags --libs` SDL2_image

sdl2-config:

gcc -o program program.c `sdl2-config --cflags --libs` -lSDL2_image

无论如何,正确的包含是:

#include <SDL2/SDL_image.h>

你应该可以做到:

find -xdev /usr -name SDL_image.h
find -xdev /usr/local -name SDL_image.h

或者,一些 ls 命令。

然后,与 pkg-config 输出进行比较。

最后的手段……我过去在使用 SDL2 和 ubuntu(仿生)时遇到过麻烦。最后,我从源包中卸载了标准包和 rebuilt/reinstalled。

加时赛:

IMG_Load returns 表面,不是纹理:

SDL_Texture *image = IMG_Load(fileName);

应该是

SDL_Surface *image = IMG_Load(fileName);

这里:

if (SDL_Init(SDL_INIT_VIDEO) < 0) printf("ERROR SDL_Init() - VIDEO");

仅仅告知错误是不够的,你应该退出(或者至少跳过所有SDL函数),更好的方法:

if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
    SDL_Log("SDL_Init: %s", SDL_GetError());
    exit(EXIT_FAILURE);
}

解决方案

It should be <SDL2/SDL_image.h> not <SDL_image.h>

Compiling with gcc should be as follows (Command Line)

$gcc FILENAME.c -o OUTNAME -w -lSDL2 -lSDL2_image