VS2013下搭建SDL开发环境
来源:互联网 发布:java获取file的后缀名 编辑:程序博客网 时间:2024/05/21 14:43
什么是SDL?
为多媒体编程而设计
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 Corporation。 保留所有权利。c.cppE:\MyDocument\Desktop\sdl>link c.obj SDL2.lib SDL2main.libMicrosoft (R) Incremental Linker Version 12.00.31101.0Copyright (C) Microsoft Corporation. All rights reserved.LINK : fatal error LNK1561: 必须定义入口点E:\MyDocument\Desktop\sdl>link /SUBSYSTEM:CONSOLE c.obj SDL2.lib SDL2main.libMicrosoft (R) Incremental Linker Version 12.00.31101.0Copyright (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.obj) 中定义LIBCMT.lib(crt0init.obj) : warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:libraryc.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开发环境搭建
- VS2013下搭建SDL开发环境
- vs2013环境下搭建openGL开发环境
- vs2013+cygwin下webkit开发环境搭建
- WINDOWS下SDL环境搭建
- win7 VS2013下搭建opengl es 2.0开发环境
- VS2013搭建wxWidgets开发环境
- vs2013+ffmpeg开发环境搭建
- VS2013+ffmpeg开发环境搭建
- VS2013搭建wxWidgets开发环境
- vs2013+QT开发环境搭建
- 【SDL】 如何在RedHat6.5中搭建SDL开发环境
- 在Windows下搭建QT+SDL环境
- SDL基础-1、搭建开发环境(CB)
- [1] ubuntu 16.04下ffmpeg+sdl的开发环境搭建及测试
- Win10环境下Openssl的编译安装以及在vs2013上开发环境的搭建
- opencv在vs2013下的环境搭建
- VS2013下boost环境的搭建
- Hadoop RPC分析 (二) -- Server
- 选夫婿1
- 我的博客
- Codeforces
- 由系统的内容提供器读取手机联系人信息
- VS2013下搭建SDL开发环境
- PHP阶段总结
- win7下安装wince6.0遇到问题的解决
- 第九章 事件标志组管理
- [Toddler's Bottle]-[leg]
- linux的会话、进程、进程组等概念
- Triplet Loss、Coupled Cluster Loss 探究
- SDKD 2016 Summer Single Contest #12 .D
- Deep Residual Learning for Image Recognition