0

0

Windows下使用VS2013编译使用SDL库

星夢妙者

星夢妙者

发布时间:2025-09-13 08:04:26

|

634人浏览过

|

来源于php中文网

原创

simple directmedia layer(sdl)是一个跨平台开发库,旨在通过opengl和direct3d提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。多种软件,如视频播放工具、仿真器和许多热门游戏(包括valve的获奖作品和humble bundle中的众多游戏)都依赖于它。

SDL正式支持Windows、Mac OS X、Linux、iOS和Android等平台。其他平台的支持可以在源代码中找到。

SDL使用C语言编写,并可以与C++兼容,同时为其他多种语言如C#和Python提供了绑定。

SDL 2.0采用zlib许可证发布,该许可证允许您在任何软件中自由使用SDL。SDL的官方网站地址为:SDL。

在VS2013中编译SDL源代码以生成静态库和动态库,可以参考官方文档《Using SDL with Microsoft Visual C++》。在撰写本文时,SDL的最新稳定版本是2.0.12。你可以从以下链接下载SDL 2.0.12的源代码:

SDL2-2.0.12.zip 或 SDL2-2.0.12.tar.gz

下载并解压缩SDL2-2.0.12.zip或SDL2-2.0.12.tar.gz后,你将得到SDL2-2.0.12目录,如下图所示:

Windows下使用VS2013编译使用SDL库

官方文档详细说明了如何在Visual Studio中编译SDL源代码,如下图所示:

Windows下使用VS2013编译使用SDL库

进入源代码所在的根目录(例如,我的SDL解压目录为:D:\env_build\SDL2-2.0.12)下的VisualC目录,目录结构如下图所示:

Windows下使用VS2013编译使用SDL库

使用VS2013、VS2015、VS2017或VS2019等开发工具打开SDL.sln文件,例如,我使用VS2013打开,如下图所示:

Windows下使用VS2013编译使用SDL库

然后选择解决方案配置(Debug或Release)和解决方案平台(Win32或X64)组合(总共有4种),以Win32下的Debug为例,使用VS2013生成SDL2-2.0.12对应的x86的Debug静态库和动态库。选择Debug模式和Win32平台后,选择菜单【生成】-【生成解决方案】,如下图所示:

Windows下使用VS2013编译使用SDL库Windows下使用VS2013编译使用SDL库

所有工程和测试都成功编译后,你会看到一共25个项目。我们主要使用SDL2和SDL2main的静态库以及相应的头文件。生成的Win32的Debug库如下图所示:

Windows下使用VS2013编译使用SDL库

其他三种配置(Win32和Release、Win64和Debug、Win64和Release)的生成方法相同。将编译好的SDL头文件(include)和库文件(lib)放置在你指定的目录下,以便后续开发使用。例如,我将它们存放在D:\env_build\SDL2_2.0.12_VS2013目录下,其目录结构如下所示:

卷 Data 的文件夹 PATH 列表
卷序列号为 3EE8-BA3A

D:. │ BUGS.txt │ COPYING.txt │ demo_tree.txt │ README-SDL.txt │ README.txt │ WhatsNew.txt │ ├─docs │ doxyfile │ README-android.md │ README-cmake.md │ README-directfb.md │ README-dynapi.md │ README-emscripten.md │ README-gesture.md │ README-hg.md │ README-ios.md │ README-linux.md │ README-macosx.md │ README-nacl.md │ README-pandora.md │ README-platforms.md │ README-porting.md │ README-psp.md │ README-raspberrypi.md │ README-touch.md │ README-wince.md │ README-windows.md │ README-winrt.md │ README.md │ ├─include │ begin_code.h │ close_code.h │ SDL.h │ SDL_assert.h │ SDL_atomic.h │ SDL_audio.h │ SDL_bits.h │ SDL_blendmode.h │ SDL_clipboard.h │ SDL_config.h │ SDL_config.h.cmake │ SDL_config.h.in │ SDL_config_android.h │ SDL_config_iphoneos.h │ SDL_config_macosx.h │ SDL_config_macosx.h.orig │ SDL_config_minimal.h │ SDL_config_pandora.h │ SDL_config_psp.h │ SDL_config_windows.h │ SDL_config_winrt.h │ SDL_config_wiz.h │ SDL_copying.h │ SDL_cpuinfo.h │ SDL_egl.h │ SDL_endian.h │ SDL_error.h │ SDL_events.h │ SDL_filesystem.h │ SDL_gamecontroller.h │ SDL_gesture.h │ SDL_haptic.h │ SDL_hints.h │ SDL_joystick.h │ SDL_keyboard.h │ SDL_keycode.h │ SDL_loadso.h │ SDL_log.h │ SDL_main.h │ SDL_messagebox.h │ SDL_metal.h │ SDL_mouse.h │ SDL_mutex.h │ SDL_name.h │ SDL_opengl.h │ SDL_opengles.h │ SDL_opengles2.h │ SDL_opengles2_gl2.h │ SDL_opengles2_gl2ext.h │ SDL_opengles2_gl2platform.h │ SDL_opengles2_khrplatform.h │ SDL_opengl_glext.h │ SDL_pixels.h │ SDL_platform.h │ SDL_power.h │ SDL_quit.h │ SDL_rect.h │ SDL_render.h │ SDL_revision.h │ SDL_rwops.h │ SDL_scancode.h │ SDL_sensor.h │ SDL_shape.h │ SDL_stdinc.h │ SDL_surface.h │ SDL_system.h │ SDL_syswm.h │ SDL_test.h │ SDL_test_assert.h │ SDL_test_common.h │ SDL_test_compare.h │ SDL_test_crc32.h │ SDL_test_font.h │ SDL_test_fuzzer.h │ SDL_test_harness.h │ SDL_test_images.h │ SDL_test_log.h │ SDL_test_md5.h │ SDL_test_memory.h │ SDL_test_random.h │ SDL_thread.h │ SDL_timer.h │ SDL_touch.h │ SDL_types.h │ SDL_version.h │ SDL_video.h │ SDL_vulkan.h │ └─lib ├─win32 │ ├─Debug │ │ SDL2.dll │ │ SDL2.exp │ │ SDL2.lib │ │ SDL2main.lib │ │ SDL2test.lib │ │ │ └─Release │ SDL2.dll │ SDL2.lib │ SDL2main.lib │ SDL2test.lib │ └─x64 ├─Debug │ SDL2.dll │ SDL2.lib │ SDL2main.lib │ SDL2test.lib │ └─Release SDL2.dll SDL2.lib SDL2main.lib SDL2test.lib

其中,include目录包含直接从源代码中复制的头文件,lib目录下是四种平台和配置对应的lib和dll库。以下是在Windows 10系统下使用VS2013编译好的SDL2_2.0.12库,可以在Windows平台上使用VS2013进行开发:

百度网盘链接:https://pan.baidu.com/s/15BD7C2z7VICpVoIYcejcXg 提取码:rfai

使用SDL库编写SDL程序,请参考《Using SDL with Microsoft Visual C++》中的《Creating a Project with SDL》章节。

Windows下使用VS2013编译使用SDL库

jQuery仿京东图片变亮变暗效果
jQuery仿京东图片变亮变暗效果

jQuery仿京东图片变亮变暗效果,鼠标悬停图片之后该图片变亮,其他图片变暗。移开鼠标所有图片变亮。兼容主流浏览器,php中文网推荐下载! 使用方法: 1、head区域引用文件lrtk.css及js库,animate.js是另外编写的动画函数。

下载

使用VS2013创建一个基于Win32的控制台应用程序,命名为SDLDemo1,并为项目创建一个main.cpp文件,如下图所示:

Windows下使用VS2013编译使用SDL库

在未导入SDL库头文件之前,引入SDL.h头文件会导致错误,显示为红色。

导入头文件时,我的SDL库路径为:D:\env_build\SDL2_2.0.12_VS2013,导入子目录include,其完整路径为:D:\env_build\SDL2_2.0.12_VS2013\include。

Windows下使用VS2013编译使用SDL库

导入库文件时,我的SDL库路径为:D:\env_build\SDL2_2.0.12_VS2013,导入子目录lib下对应平台(win32或x64)的配置(Debug或Release),例如,我选择的是完整路径为:D:\env_build\SDL2_2.0.12_VS2013\lib\win32\Debug。注意:为了通用性,我使用了(Platform)和(Configuration)这两个宏,分别表示对应的平台和配置。

然后再添加附加依赖项和lib库:

SDL2.lib SDL2main.lib

如下图所示:

Windows下使用VS2013编译使用SDL库

在main.cpp中输入如下测试代码:

#include "SDL.h"

int main(int argc, char* argv[]) { // 程序主体在这里 return 0; }

按Ctrl+F5或者菜单【调试】-【开始执行】,如果报错,说明找不到SDL.dll,如下图所示:

Windows下使用VS2013编译使用SDL库

由于我生成的可执行程序SDLDemo1.exe所在目录E:\SoftDevelop\CPlus\SDLProjects\SDLDemo1\Debug下没有SDL.dll,所以会报错。将之前编译生成的SDL.dll拷贝到可执行程序SDLDemo1.exe同级目录,再重新运行:

Windows下使用VS2013编译使用SDL库Windows下使用VS2013编译使用SDL库

当然,为了简化操作,也可以自己编写一个SDL库的属性文件sdl2_vs2013.props。假设我的SDL2.0.12库目录为:D:\env_build\SDL2_2.0.12_VS2013,其目录结构如下所示:

Windows下使用VS2013编译使用SDL库

其内容如下所示:


http://schemas.microsoft.com/developer/msbuild/2003">;








D:\env_build\SDL2_2.0.12_VS2013\include;%(AdditionalIncludeDirectories)


D:\env_build\SDL2_2.0.12_VS2013\lib\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories)
SDL2.lib;SDL2main.lib;SDL2test.lib;%(AdditionalDependencies)




这里分享一下我从官网下载的SDL源代码以及使用VS2013编译好的库的下载地址:

百度网盘下载链接:https://pan.baidu.com/s/1OkVWYy1XVBYlTkIwd_3F2Q 提取码:9b6a

参考资料:

  • SDL官网
  • Using SDL with Microsoft Visual C++
  • How to Set Up SDL with Visual Studio
  • SDL library in C/C++ with examples
  • libSDL2pp

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

401

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

620

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

354

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

260

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

608

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

532

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

648

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

604

2023.09.22

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

89

2026.02.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 5.1万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.3万人学习

NumPy 教程
NumPy 教程

共44课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号