SDL2.0 学习笔记-1 windows下的第一个测试程序
SDL全称是Simple DirectMedia Layer,是一个开源的、跨平台(win32,linux,mac)的多媒体开发c语言库。
第一步,下载源文件
首先去这个页面http://www.libsdl.org/tmp/download-2.0.php下载相关资源文件,直接下载SDL2-2.0.0.zip来自己编译,或者按自己的系统下载相关的开发资源(bin和include)。解压资源包后,内容如下:

include目录下头文件,src目录下是SDL的源c文件。
为了方便地在VS下编写SDL程序,可以将include里的内容,放到的开发环境的include目录下,如在C:\Program Files\Microsoft Visual Studio 11.0\VC\include下新建sdl目录放置所有sdl头文件。
(也可以使用junction link,使用mklink /J "C:\Program Files\Microsoft Visual Studio 11.0\VC\include\sdl" ./sdl2.0.../include 命令来完成)
第二步,编译SDL(要是下载了相关的开发资源的话,可以直接跳过这一步)
进入VisualC目录下,可以看到vs的sln文件,支持vs2008,vs2010,vs2012,按自己的vs版本选择相关的solution打开,编译,分别可以得到SDL2.lib、SDL2main.lib、SDL2test.lib 、 SDL2.dll文件。
SDL2.lib是核心的静态链接库文件,SDL2main.lib定义了SDL在windows平台下入口函数(这点后面详解),SDLtest.lib用于测试(属于sdltest库,可以用它来测试你当前系统或平台对SDL功能的支持程度)。
第三步,编写第一个sdl程序
创建工程,新建c或cpp源文件。开始简的coding来测试一下:

1 #include <sdl/SDL.h>
2 #include <iostream>
3
4 // 由于SDL内部重定义了main, main函数一定得是这个形式,具体为何,后面详细说明
5 int main(int argc, char * argv[])
6 {
7 // 初始化SDL
8 if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)== -1))
9 {
10 // 初始化失败,打出错误,注意SDL_GetError返回一个字符串,可读性很好,是不是?
11 printf("Could not initialize SDL: %s.\n", SDL_GetError());
12 }
13 else
14 {
15 printf("SDL initialize ok!");
16 }
17 // 结束SDL
18 SDL_Quit();
19 getchar();
20 return 0;
21 }

这里需要说明的几点:
1、入口函数不能写成main(),必须有参数,因为SDL将内部已经实现了入口函数,这里的main其实是SDL_main。
2、如果是在windows环境下使用vs,注意测试工程需要作以下设置:
(1)项目属性-配置属性-链接器-系统:子系统(选控制台 (/SUBSYSTEM:CONSOLE)或 窗口 (/SUBSYSTEM:WINDOWS))。
(2)项目属性-配置属性-c/c++:附加包含目录:选择SDL的include目录。
(3)将SDL2.lib、SDL2main.lib添加到项目中。加到 项目属性-配置属性-链接器-输入:附加依赖项,或者直接以文件形式添加。
SDL2.0 学习笔记-1 windows下的第一个测试程序的更多相关文章
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- google protobuf学习笔记:windows下环境配置
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743 protobuf的使用和原理,请查看:http:/ ...
- redis学习笔记(一)——windows下redis的安装与配置
前言 很久没有写东西了(.......我的水平就是记个笔记),北漂实习的我,每天晚上回来都不想动,但是做为社会主义接班人的我,还是要时刻给自己充充电,趁着年轻,趁着日渐脱发的脑袋还没有成为" ...
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.superviso ...
- DirectX 总结和DirectX 9.0 学习笔记
转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...
- TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub)[转]
TortoiseGit和msysGit安装及使用笔记(windows下使用上传数据到GitHub) Git-1.7.11-preview+GitExtensions244SetupComplete+T ...
- osg for android学习之一:windows下编译(亲测通过)【转】
1. 首先需要一个OSG for android的环境 (1)NDK 现在Eclipse 对NDK已经相当友好了,已经不需要另外cygwin的参与,具体可以参考 Android NDK开发篇(一):新 ...
- 学习笔记(1)centos7 下安装nginx
学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...
- OAuth 2.0学习笔记
文章目录 OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动. OAuth在"客户端&quo ...
随机推荐
- Sublime Text 2.0.2 注册码
Sublime Text 2.0.2 注册码 直接输入注册码就可以了----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-85560 ...
- java 类加载过程
1. 使用命令行查看类加载过程,在eclipse测试类的run configuration中配置-verbose:class或者-verbose,如下图所示: 运行结果如下所示: [Opened D: ...
- C#txt文件读写基本操作
string strFileName=@"C:\Users\Administrator\Desktop\记事2.txt"; //判断是否存在 if (File.Exists(str ...
- C# 面向对象 , 类与对象
一,类的字段 类的字段, 就是类里面的 数据. 二,类的方法 1 , 函数的重载 , 如何判断: 是由两个或多个同名函数组成的,但是函数要有不同的参数.或个数.(参数 是函数的输入的东西) shu ...
- shell中if做比较
比较两个字符串是否相等的办法是: if [ "$test"x = "test"x ]; then 这里的关键有几点: 1 使用单个等号 2 注意到等号两边各有一 ...
- zepto源码研究 - zepto.js - 5(dom属性管理)
index: $.fn = {...... indexOf: emptyArray.indexOf,} index: function(element){ //这里的$(element)[0]是为了将 ...
- Vim模式
Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.和Emacs并列成为类Unix系统用户最喜欢的编辑器. Vim的第一个版本由布莱姆 ...
- 自己寫的 Loading JS插件
本文為原創文章,轉載請注明出處,謝謝./** * @author samkin.yang * @version 1.0 */var $_yxj = new SamkinLoading(); (func ...
- CSS代码写出的各种形状图形
做网页设计时经常要用到各种形状的图形,对于规则的图形很简单,但是对于不规则的图形,一般我们都是用图片,今天就在这里教大家怎样用css代码写出各种规则不同的图形 1.正方形 #square {width ...
- ionic框架,快速开发webAPP神器。
官网地址 http://www.ionicframework.com/ 这个国外框架已经很火了.会使用插件的话更好,例如支付宝支付插件,调用摄像头拍照,二维码扫描,通讯录,文件上传,推送信息等等. 最 ...