SDL2_image未找到。

16

我正在尝试编译以下具有标头的代码:

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

然而,在运行以下makefile之后:

g++ -std=c++11 src/main.cpp -lSDL2 -lSDL2_image

我遇到了以下错误:

fatal error: SDL2_image/SDL_image.h: No such file or directory
#include <SDL2_image/SDL_image.h>

有什么建议吗?我对我的SDL_image安装不是非常确定。我在Ubuntu上运行这个。


1
我检查了我的代码,发现有 #include <SDL/SDL_image.h>。尝试用<SDL2/SDL_image.h>,也许会有帮助。 - Karlis Olte
你需要告诉我们SDL_image.h安装在哪个目录下。一旦我们知道了这一点,就可以告诉你如何将相关编译选项添加到你的makefile中。 - Daniel Strul
运行 apt-file search SDL_image.h 后,我得到了以下结果:`emscripten: /usr/share/emscripten/system/include/SDL/SDL_image.h` libsdl-image1.2-dev: /usr/include/SDL/SDL_image.h`libsdl2-image-dev: /usr/include/SDL2/SDL_image.h` - mas4
@KarlisOlte 谢谢,你的建议起作用了!不太确定为什么(猜测是指 [文件夹名称]/[文件名称])。感谢你的帮助。 - mas4
4个回答

17

通过安装libsdl2-image-dev软件包,可以解决这个问题:

apt install libsdl2-image-dev

4

运行 apt-file search SDL_image.h 命令, 结果将告诉您包含文件的位置。

例如,返回了 /usr/include/SDL2/SDL_image.h。 因此,当您想要包含 SDL_image.h 时,请在 < > 之间写入 include/ 后面的所有内容。

因此,包含应该如下所示:

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

请参考问题评论中关于此解决方案的讨论。

2
从SDL文档上看,它说要在编译行的末尾添加'lSDL_image'。
    cc -o myprogram mysource.o `sdl-config --libs` -lSDL_image

或者

    gcc -o myprogram mysource.c `sdl-config --libs` -lSDL_image

这里是参考资料 -> https://www.libsdl.org/projects/docs/SDL_image/SDL_image.html 第2.2节 编译。
因此,对于SDL2,您只需要将'lSDL_image'更改为'lSDL2_image'。

1

对于使用 Windows + SDL2-2.0.8 + SDL_image-2.0.4 + Codeblocks 的开发者,你需要将 运行时二进制文件开发库 都加入到编译器和链接器中。否则,即使在程序目录下有 dll 文件,你仍会遇到 SDL2_image未找到 的错误。希望这篇文章能对大家有所帮助,我自己也是通过摸索才解决了这个问题。例如:如果你的资源是分离的,那么你需要将这两个文件夹和标准的 SDL2 路径都添加到编译器和链接器中。注意:SDL2_image.h 头文件假定头文件与 SDL2 框架位于同一文件夹中。如果你在图像头文件上出现错误,请在路径中包含来自 SDL 框架的子文件夹 SDL2 ,然后你应该将SDL.h 包括到程序中,如下所示:include <SDL.h> 而不是 include <SDL2/SDL.h>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接