SDL 在windowns下安装

非常不错的SDL教程。
 
 
一.Window下SDL环境安装
-----------------------------------------------------------------
 
在Windows 下可以用多种开发环境来安装。具体方法参见
 
但一般我比较习惯于使用VC++6.0来开发SDL程序,以下介绍在VC++安装和使用库.
 
首先下载编译好的SDL开发库.(当然你可以自己行编译库,一般不推荐)
 
 
1.下载后解压到指定目录,假设是 e:\huisen\SDL下, 把解压的头文件路径include拷贝一份改名为SDL(理由后面解释)
 
2.把lib/SDL.dll 拷贝到 windows\system32 ,以便程序运行能找到它运行。
 
 
配置VC++ 6.0。
 
在程序中使用SDL库,有两种模式,一种是在每个项目里加上SDL库的路径,另外一种更为简单好用的办法,是把SDL设为所有项目共享的库。方法在主菜单 tools-->options 选择directories页标签。
 
首先是头文件目当设为SDL库目录下的include目录,这样程序中直接可以使用头文件,在这里有一个细节,
一般SDL有头文件直接在include下面,但是LINUX版或一般的SDL程序是引用 #include <SDL/SDL.h>
这里把include 设为引用目录,会将成头文件找不到。所以建议把include目录拷贝改成SDL,方便移植的程序可以找到头文件.将SDL目录本身设为include如下设置
 
 
设SDL的lib路径为整个环境的库路径
 
 
测试SDL游戏
 
我们用一个简单的DEMO来演示整个SDL环境使用
 
1.在VC++ 6.0中建立一个console项目,把hello.c加和到项目中。
 
2.在项目中加入对SDL的库的链接。(SDL.lib和SDLmain.lib) 如果是调试版,要忽略链接msvcrt.lib
 
 
3.要求采用DLL多线程库来作运行库。(这是SDL FAQ的要求,否则有链接错误)
   在项目选项,c/C++-->Code Generation-->Using Runtime library选择
    Debug MultiThread DLL(DEBUG版)或者 MultiThread DLL(Release版)
4.删除编译选项中的/GZ (编译器堆栈检查功能).这个主要是为了去掉如下链接错误
    error LNK2001: unresolved external symbol __chkesp
  (参见上图)
 
运行测试程序,会有如下效果.
 
注意后面有一个控制台出现,所有printf将输出到终端上来。如果不需要显示控制台。
可以把链接选项里的 /subsystem:console 改为 /subsystem:windows 即可
 
 
二.Linux的SDL开发环境安装
-----------------------------------------------------------------
 
  Linux 首先需要安装SDL库和SDL开发库。安装方式有两种,一种是编译后安装(这个方法出问题可能性最小,建议用这个方法)
 
  另外一种是用rpm包来安装库和开发包。
 
  第一种方法编译安装首先下载
 
 简单的解压缩
      tar xvzf SDL-1.2.14.tar.gz
    然后
      ./configure
       make
       make install.
 
  它将安装库到 /usr/local/lib ,头文件在/usr/local/include当中。
 
   测试hello程序
     gcc -o hello hello.c -lSDL  #编译语句
    执行程序 export LD_LIBRARY_PATH=/usr/local/lib;./hello
如果正确无误将会显示如下界面
  
 
 
 
三.SDL编程基本流程.
----------------------------------------------------------------
   SDL开发使用相关数据结构,必须在源码中使用  #include <SDL/SDL.h>
 
   在Linux链接时,必须要链接libSDL.so库。 即在gcc语句加入 -lSDL 选项.
   Windows下在VC界面的项目选项的链接库,加入 SDL.lib链接语句。
 
   SDL由八个子系统组成——音频、CDROM、事件处理、文件I/O、游戏杆、线程、记时器和视频,
 在使用SDL库时,在程序开源要调用
   SDL_Init()来初始化,它有如下定义:
 
      int SDL_Init(Uint32 flags);
 
    其中flags指明是哪一个子系统在初始化装入。一般用  SDL_INIT_EVERYTHING,表示所有模块装入.
实始化成功返回为0,失败返回-1;
 
如想初始化特定模块,可用特殊选项。如下列语句用于实始化视频与定时器模块
 
    SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
 
   当SDL程序即出时,须调用SDL_Quit();来做一些清除工作。
 
   基本框架代码
   
 

#include <SDL/SDL.h>

int main()
{ 

   if((SDL_Init(SDL_INIT_EVERYTHING)==-1)) { 
   printf("Could not initialize SDL: %s.\n", SDL_GetError());
   return -1;
   }

         printf("hello ,the SDL world\n");
   
   /* Shutdown all subsystems */
   SDL_Quit();

}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值