如何在Windows和Linux上同时包含SDL2和SDL_映像 我在Linux上开发了C++和SDL2,并且已经使用下面的表单在我的头中包括SDL2: #include <SDL2/SDL.h> #include <SDL2/SDL_image.h>
导致一长串错误,从如何在Windows和Linux上同时包含SDL2和SDL_映像 我在Linux上开发了C++和SDL2,并且已经使用下面的表单在我的头中包括SDL2: #include <SDL2/SDL.h> #include <SDL2/SDL_image.h>,c++,sdl-2,C++,Sdl 2,导致一长串错误,从 undefined reference to `IMG_Load' 使用 我知道这两个错误都与SDL_图像有关。唯一有效的办法是 #include <SDL2/SDL.h> #include <SDL2/SDL_image.h> #包括 #包括 编译时使用-lSDL2-lSDL2_映像,但如果可能的话,我宁愿避免这样做,这样我就不必在Linux和Windows上都使用#ifdef进行编译 有人能告诉我哪里出了问题吗?除了上次尝试之外,您都在使用S
undefined reference to `IMG_Load'
使用
我知道这两个错误都与SDL_图像有关。唯一有效的办法是
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#包括
#包括
编译时使用-lSDL2-lSDL2_映像,但如果可能的话,我宁愿避免这样做,这样我就不必在Linux和Windows上都使用#ifdef进行编译
有人能告诉我哪里出了问题吗?除了上次尝试之外,您都在使用SDL 1或将其与SDL 2混合使用。你真的不想那样做。另外,Windows包含部分与Linux包含部分有何不同?我不确定我是否同意你的评估。我没有安装SDL1,SDL位编译良好。SDL2的头文件称为SDL.h,使用#include“SDL.h”引用SDL2是正确的。区别在于它位于SDL2目录中,我在-I/usr/include/SDL2中指定了该目录。SDL#U映像的头文件也在/usr/include/SDL2中,这就是我不确定为什么#include“SDL#U映像”不起作用的原因。Windows的include语句是#include“SDL.h”错误
未定义的对
的引用是缺少到编译器的链接指令的符号。Include目录与此错误没有任何共同之处(除非您使用了错误的标题,这不太可能是您的情况)。首先,您也可以使用第一个Include表单(但第二个是“正式”推荐的,包含路径来自sdl2 config--cflags
),只需设置正确的包含路径即可。第二,即使你在include路径中使用了SDL1.2并包含了它们,也不应该像你描述的那样,因为这些符号名称是相同的。您能否提供最少的示例,或者至少提供完整的编译和链接行?
#include "SDL.h"
#include <SDL2/SDL_image.h>
undefined reference to symbol 'SDL_FreeSurface'
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>