Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39545
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-26 10:44
文章分类
文章存档

2016年(2)

2015年(10)

我的朋友

分类: C/C++

2016-02-25 11:47:30

原文地址:SDL 编程基本知识 作者:bluedrum

官方的编程简要教程
 
 
非常不错的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
这里把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
 
   在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();

}


文件: hello_sdl.zip
大小: 9KB
下载: 下载
阅读(1729) | 评论(0) | 转发(0) |
0

上一篇:SDL编程教程--SDL_mixer播放音乐

下一篇:没有了

给主人留下些什么吧!~~