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 ...
随机推荐
- Media层
媒体层包含图形技术.音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易.您可以使用iOS的高级框架更快速地创建高级的图形和 ...
- 705 - Slash Maze
By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice little mazes. Her ...
- Apache配置HTTPS协议搭载SSl配置全过程
1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...
- 静态代码检查工具 cppcheck 的使用
CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们 ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- 大数据笔记04:大数据之Hadoop的HDFS(基本概念)
1.HDFS是什么? Hadoop分布式文件系统(HDFS),被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点. 2.HDFS ...
- Linux用户磁盘配额
一:内核中支持QUOTA: [root@localhost /]# grep CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA ...
- css中的垂直居中方法
单行文字 (外行高度固定) line-height 行高, 将line-height值与外部标签盒子的高度值设置成一致就可以了. height:3em; line-height:3em; 多行文字 图 ...
- ado.net(1)
connection对象处于最顶层,是所有数据请求的关口 数据库连接过程 SqlConnection theConnection = new SqlConnection(); //创建一个connec ...
- JavaScript网页制作特效
一.什么是JavaScript? 网页交互特效的脚本语言. 特效 二.BOM对象 能够使得JavaScript和浏览器进行对话. 主要是使用Window对象进行操作. History对象:历史,可以实 ...