Windows下使用VS2013编译使用SDL库

星夢妙者
发布: 2025-09-13 08:04:26
原创
615人浏览过

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
<p>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库

AI图像编辑器
AI图像编辑器

使用文本提示编辑、变换和增强照片

AI图像编辑器 46
查看详情 AI图像编辑器

使用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"</p><p>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库

其内容如下所示:

<?xml version="1.0" encoding="utf-8"?>
<project toolsversion="4.0" xmlns="<a href="https://www.php.cn/link/517cd23ae4375b47d04ef6363a229b13">http://schemas.microsoft.com/developer/msbuild/2003"&gt</a>;
<importgroup label="PropertySheets">
</importgroup>
<propertygroup label="UserMacros">
</propertygroup>
<propertygroup>
</propertygroup>
<itemdefinitiongroup>
<clcompile>
<additionalincludedirectories>D:\env_build\SDL2_2.0.12_VS2013\include;%(AdditionalIncludeDirectories)</additionalincludedirectories>
</clcompile>
<link>
<additionallibrarydirectories>D:\env_build\SDL2_2.0.12_VS2013\lib\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories)</additionallibrarydirectories>
<additionaldependencies>SDL2.lib;SDL2main.lib;SDL2test.lib;%(AdditionalDependencies)</additionaldependencies>
</link>
</itemdefinitiongroup>
<itemgroup>
</itemgroup>
</project>
登录后复制

这里分享一下我从官网下载的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

以上就是Windows下使用VS2013编译使用SDL库的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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