UFO SDL编程入门第一个工程
刚建立个工程,遇到了一个问题,就是SDL头文件和库路径的问题,总是提示找不到库,如图:
百度了很多种方法,都没能解决问题,很郁闷,最后在一篇安装SDL的文章中看到了,SDL里面有test程序,可以测试效果,于是乎我在test里面试了下例程,果然可以运行。既然它的可以运行,就一定有正确的路径设置。哈哈,解决问题的关键。下面请跟我一起来看看怎么解决(^水平有限啊,不足之处请多指正^)
![](https://i-blog.csdnimg.cn/blog_migrate/7d54a92b813b8862611f84768932e30a.png)
现在这个问题解决了,希望能对大家有所帮助;
使用Eclipse编译环境,学习SDL编程,环境配置步骤
首先在程序里包含头文件
#include "SDL2/SDL.h"
#include "SDL2/SDL_image.h"
然后在工程配置里面设置头文件路径
Project->Properties->C/C++General->Paths and Symbols里面设置GUN C头文件路径
![](https://i-blog.csdnimg.cn/blog_migrate/77b901a4a6aebfdf0476b8c7107c5840.png)
设置SDL库路径方法如下:
如果是手动源码安装的SDL,在SDL安装包下有一个test文件夹,进入test文件夹,运行./configure,然后make,之后你就会看到很多测试程序,这些都是可以直接运行的程序。
![](https://i-blog.csdnimg.cn/blog_migrate/49e82ea941c0652210474c8050945c8d.png)
这一步有啥么用呢,别着急;
打开makefile文件,找到里面的路径,也就是我们编程要使用的路径
![](https://i-blog.csdnimg.cn/blog_migrate/64e205b7ab43e3fab5ba3f44753d82f8.png)
可以看到,头文件路径就是刚才上面的那个,LIBS表示库文件路径,可以看到有
-L/usr/local/lib -lSDL2
这个就是我们需要的,打开刚才工程配置Library Paths,Add输入usr/local/lib,如下图;
![](https://i-blog.csdnimg.cn/blog_migrate/b15c493ffe085e9fb49d9bf8487bae46.png)
然后在打开Libraries,,Add输入SDL2,如下图;
![](https://i-blog.csdnimg.cn/blog_migrate/7a71bc968b34cab7d84cc4e67f2abab9.png)
SDL_image的头文件和库路径添加跟SDL基本库一样,都是在同一个地方,只是名称不同。添加好SDL基本库后,其他的
SDL_image,SDL_mixer,SDL_net,SDL_ttf都是依赖于基本SDL库的,所以路径是一样的。
配置好后,就可以build project了,然后run,就可以看到程序结果了,窗口名称叫hello,上图:
![](https://i-blog.csdnimg.cn/blog_migrate/c0cdb17717916b723b4bc454528e2a19.png)
源码:
#include <stdlib.h>
#include "SDL2/SDL.h"
#include "SDL2/SDL_image.h"
int main(int argc,char *argv[])
{
SDL_Window* window =0;
SDL_Renderer* render=0;
SDL_Texture *texture=0;
SDL_Rect src,dst;
int width,height;
SDL_Init(SDL_INIT_EVERYTHING);
window=SDL_CreateWindow("hello",SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,1366,768,SDL_WINDOW_SHOWN);
render=SDL_CreateRenderer(window,-1,0);
texture=IMG_LoadTexture(render,"tux.jpg");
SDL_QueryTexture(texture,NULL,NULL,&width,&height);
src.x=src.y=0;
src.w=width;
src.h=height;
dst.x=30;
dst.y=20;
dst.w=width;
dst.h=height;
SDL_SetRenderDrawColor(render,0,0,0,255);
SDL_RenderClear(render);
SDL_RenderCopy(render,texture,&src,&dst);
SDL_RenderPresent(render);
SDL_Delay(30000);
SDL_DestroyWindow(window);
SDL_DestroyRenderer(render);
SDL_Quit();
return 0;
}
//UFO&ET原创,欢迎交流