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
我正在使用 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
编辑:从您最近的编辑看来,您已经[已经]解决了您的问题,因此以下内容可能没有实际意义。
安装 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