什么是SDL?

SDL是 “Simple DirectMedia Layer”的缩写,它是一个开源的项目。

为多媒体编程而设计

SDL是一个跨平台的多媒体库,它通过OpenGL和2D视频帧缓冲,提供了针对音频、视频、键盘、鼠标、控制杆及3D硬件的低级别的访问接口。它在MPEG播放软件、模拟器以及许多游戏中得到广泛的应用,其中包含了获得大奖的“文明:权力的呼唤”的Linux 版本。

优越的跨平台特性

SDL支持以下操作系统:Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX,以及 QNX。同时代码中包含了针对AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, 和OS/2的支持,但这些并不是正式的支持。

支持多种程序语言

SDL是用C编写的,但可以原生地配合C++使用,并且它拥有一些其他程序语言的绑定,这包括:Ada, C#, D, Eiffel, Erlang, Euphoria, Go, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk,
以及 Tcl。

因为开源,所以自由

SDL采用GNU的LGPL第二版许可发行。该许可允许你自由地链接其动态链接库,甚至可以在商业软件中自由地使用。

其实如果环境配置多了,我们会发现很多vc的环境配置都大同小异。先下载源文件,可以去官网下载也可以直接CSDN下载:http://www.libsdl.org/download-2.0.php

1 SDL简介

作用

SDL(Simple DirectMedia Layer)库的作用说白了就是封装了复杂的视音频底层交互工作, 简化了视音频处理的难度。

本课程中只涉及到SDL库的一小部分——视频显示部分。

特点

跨平台

开源

结构

SDL结构如下所示。可以看出它实际上还是调用了DirectX等底层的API完成了和硬件的交互。

2 VS2013下SDL开发环境的搭建

2.1 新建控制台工程

打开VC++

文件->新建->项目->Win32控制台应用程序,确定

下一步:

完成

2.2 拷贝SDL开发文件

头文件( *.h)拷贝至项目文件夹的include子文件夹下

导入库文件( *.lib)拷贝至项目文件夹的lib子文件夹下

动态库文件( *.dll) 拷贝至项目文件夹下

2.3 配置开发文件

打开属性面板

解决方案资源管理器->右键单击项目->属性

头文件配置

配置属性->C/C++->常规->附加包含目录,输入“ include”(刚才拷贝文件的目录)

导入库配置

配置属性->链接器->常规->附加库目录,输入“ lib” (刚才拷贝文件的目录)

配置属性->链接器->输入->附加依赖项,输入“ SDL2.lib;SDL2main.lib”(导入库的文件名)

此时编译(debug)会显示:

E:\MyDocument\Desktop\sdl>cl /c c.cpp
用于 x86 的 Microsoft (R) C/C++ 优化编译器 18.00.31101 版版权所有(C) Microsoft C
orporation。 保留所有权利。 c.cpp E:\MyDocument\Desktop\sdl>link c.obj SDL2.lib SDL2main.lib
Microsoft (R) Incremental Linker Version 12.00.31101.0
Copyright (C) Microsoft Corporation. All rights reserved. LINK : fatal error LNK1561: 必须定义入口点 E:\MyDocument\Desktop\sdl>link /SUBSYSTEM:CONSOLE c.obj SDL2.lib SDL2main.lib
Microsoft (R) Incremental Linker Version 12.00.31101.0
Copyright (C) Microsoft Corporation. All rights reserved. msvcrt.lib(MSVCR120.dll) : error LNK2005: _exit 已经在 LIBCMT.lib(crt0dat.obj)
中定义
msvcrt.lib(MSVCR120.dll) : error LNK2005: ___iob_func 已经在 LIBCMT.lib(_file.ob
j) 中定义
LIBCMT.lib(crt0init.obj) : warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲
突;请使用 /NODEFAULTLIB:library
c.exe : fatal error LNK1169: 找到一个或多个多重定义的符号 E:\MyDocument\Desktop\sdl>

解决办法:

1、切换为release版本(运行库4种都可以或者不设置)

2、或者(debug下)设置运行库为MTD、MD、MDD中的一种,测试MT和不设置会链接错误

3 测试

创建源代码文件

在工程中创建一个包含main()函数的C/C++文件(如果已经有了可以跳过这一

步),后续步骤在该文件中编写源代码。

包含头文件

如果是C语言中使用SDL,则直接使用下面代码

#include "SDL2/SDL.h"

如果是C++语言中使用SDL, 则使用下面代码

extern "C"

{

#include "SDL2/SDL.h"

}

main()中调用一个SDL的接口函数

例如下面代码初始化了SDL

#include <iostream>

extern "C"
{
#include <SDL.h>
} int main(int argc, char* argv[])
{
if (SDL_Init(SDL_INIT_VIDEO) == -1)
{
std::cout << SDL_GetError() << std::endl;
return -1;
}
else
{
std::cout << "SDL initialized." << std::endl;
} SDL_Quit();
return 0;
}

运行结果:

命令行下:

如果运行无误,则代表SDL已经配置完成。

另外不添加main函数参数int argc, char* argv[]也会报错

SDL学习教程:

http://kelvmiao.info/sdl-tutorial-cn/

http://sdl2.atd3.cn/

VS2013下搭建SDL开发环境的更多相关文章

  1. Windows下搭建Git开发环境

    Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...

  2. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  3. Mac下搭建php开发环境教程

    方案一:原生安装 这篇文章主要介绍了Mac下搭建php开发环境教程,Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便.本文以Mac OS X 10.6.3为例,需要的朋友可以参考 ...

  4. 【原创】windows下搭建vue开发环境+IIS部署

    [原创]win10下搭建vue开发环境  如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安 ...

  5. Ubuntu 12.04下搭建Qt开发环境

    http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...

  6. Ubuntu系统下搭建Python开发环境

    之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-reposito ...

  7. mac 下搭建 Android 开发环境

    因工作需要,要在mac 下搭建 Android 开发环境.谷歌.度娘了好久,没有找个一个完整又系统的方法,很是苦恼.最终,皇天不负有心人,找到了下面这篇文档,结合亲身体验,特此记录.也为有这方面需求的 ...

  8. 在win10环境下搭建 solr 开发环境

    在win10环境下搭建 solr 开发环境 2017年05月30日 09:19:32 SegaChen0130 阅读数:1050   在win10环境下搭建 solr 开发环境 安装环境  Windo ...

  9. windows下搭建vue开发环境+IIS部署

    原创]win10下搭建vue开发环境  https://www.cnblogs.com/ixxonline/p/6007885.html 特别说明:下面任何命令都是在windows的命令行工具下进行输 ...

随机推荐

  1. 由数据迁移至MongoDB导致的数据不一致问题及解决方案

    故事背景 企业现状 2019年年初,我接到了一个神秘电话,电话那头竟然准确的说出了我的昵称:上海小胖. 我想这事情不简单,就回了句:您好,我是小胖,请问您是? "我就是刚刚加了你微信的 xx ...

  2. 删除centos自带的openjdk

    [wj@master hadoop]$ rpm -qa | grep javajava-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64python-javapa ...

  3. Java8 新特性(一)- Lambda 表达式

    2014年3月18日发布了JavaSE 8 不追求技术的新,追求技术的稳定 本质:Lambda 表达式是一个匿名函数 作用:简化代码,增强代码的表达力 Lambda 语法格式 // 格式1:无参无返回 ...

  4. 通过自己实现接口来加深理解SpringMVC的执行流程

    功能介绍 上篇文章[从源码角度了解SpringMVC的执行流程]通过接口源码向大家介绍了SpringMVC的执行流程,主要偏重于源码.这篇文件我们来自己实现那几个关键接口,来真实体验下SpringMV ...

  5. flask部署深度学习模型

    flask部署深度学习模型 作为著名Python web框架之一的Flask,具有简单轻量.灵活.扩展丰富且上手难度低的特点,因此成为了机器学习和深度学习模型上线跑定时任务,提供API的首选框架. 众 ...

  6. 【Linux】---Linux系统下各种常用命令总结

    在Linux系统下,“万物皆文件”,之所以强调在强调这个概念,是因为很多人已经习惯了win系统下找找点点得那种方式和思维,因此总是会觉得linux系统下很多指令既复杂又难记.其实都是一样得东西,只是w ...

  7. 一文熟练使用python mock

    mock作为python测试模拟对象工具,在单元测试当中使用较多,官方文档详细不够精简,这篇文章介绍mock常用的用法,以下为引用全文,留给自己和有需要的人查阅. https://realpython ...

  8. 聊聊HTTP请求那一些事_HttpWebRequest_一篇就够了

    ​最近工作比较忙,很久没有写东西了,今天抽点时间整体一下最近工作的一个知识点小结.http请求对我们来说一点都不模式,程序员的我们有可能天天就是和这一些打交道.无论是BS架构的程序,前后端的数据交互, ...

  9. NMI计算

    NMI计算 NMI(Normalized Mutual Information)标准化互信息,常用在聚类中,度量两个聚类结果的相近程度.是社区发现(community detection)的重要衡量指 ...

  10. pycharm 连接mysql失败

    1.下载与之对应的驱动 2.更改数据库的时区(问题大多数出现在这里) .查看时区 show variables like '%time_zone%'; .设置时区 set global time_zo ...