1. 如何成功运行SDL官方提供的android平台的Demo
操作步骤:
第一步:准备SDL源代码包;
1. 去官网下载最新版SDL2-2.0.3.tar.gz;
2. 解压后,可以在根目录下找到android-project目录和README-android.txt,前者是一个一个Android工程模板,后者是关于如何使用该工程的文档说明。
3. 调整目录,使其成为一个可编译的工程:
(1) 将android-project目录剪切到与SDL2-2.0.3同级的目录;
(2) 然后将SDL2-2.0.3目录拷贝到android-project\jni目录下,并重命名为SDL;
第二步:为SDL增加main函数
(1) 下载wiki.libsdl.org/Tutorials#Android.c文件;
(2) 下载之后将其放入android-project\jni\src目录;
(3) 将main.c加入android-project\jni\src\Android.mk: 在Android.mk中默认有个YourSourceHere.c,将其替换为main.c即可;
第三步:编译libSDL2.so和libmain.so
注:请确认NDK的bin目录已经配置到环境变量PATH中去;
打开cmd命令窗口,进入到android-project目录,然后执行"ndk-build"命令进行编译。编译成功后会在android-project根目录下生成libs目录,下面有各个平台的需要的这两个so文件。
第四步:修改build target配置文件
默认的工程是使用的=android-12,必须使这个target与系统配置的一致,否则编译会失败. 具体的配置位于android-project/project.properties和android-project/default.properties中。由于adt-bundle-windows-x86_64-20130729.zip包对应的是android-18,因此需要将这两个文件中的配置全部改为android-18.
第五步:导入Eclipse运行
依次选择File->New->Android->Android Project from Existing Code,然后选择android-project目录将工程文件导入到Eclipse中。
然后选择按照正常的Android工程运行即可。这个时候程序闪一下什么都没有,因为没有添加资源。可下载一个bmp图片放到android-project/assets中,这个目录是由eclipse自动生成的。然后运行就可以看到通过SDL渲染出来的图片了。
2. linux下编译ffmpeg 以及交叉编译并引入Android
在Linux环境下,编译ffmpeg并进行Android交叉编译的步骤如下:
首先,为支持mp3编码,你需要安装lame库,可通过`ffmpeg -i audio.wav -acodec libmp3lame audio.mp3`进行测试。然后,编译ffmpeg,常用的配置命令是`./configure --prefix=/usr/local/ffmpeg --enable-debug=3`,但可能会遇到错误,如gcc编译器问题或nasm/yasm未找到。遇到这些问题,建议更新ffmpeg版本并检查config.log日志。
编译时,可能遇到权限问题,如`mkdir: cannot create directory '...': Permission denied`,这时需要确保有足够的权限。环境变量的配置也很重要,可以在.profile文件中添加`path`和`pkg_config_path`,配置后通过`source .profile`使更改生效。
在编译过程中,如果ffplay没有出现在bin目录中,可能需要安装sdl2并重新configure、make和install。如果遇到so文件链接问题,可以编辑`/etc/ld.so.conf`并运行`ldconfig`来解决。
为了在Android设备上使用ffmpeg,你需要下载Android NDK,然后执行`make-standalone-toolchain.sh`生成交叉编译工具链。创建一个脚本(build_ffmpeg.sh),包含针对不同架构的编译命令,注意调整工具链路径、架构和输出目录。
在编译ffmpeg时,可能需要额外添加x264支持以处理h264编码。下载x264源码后,同样使用configure进行配置,但可能需要解决缺少nasm的问题。
总的来说,编译ffmpeg涉及多个步骤,包括安装依赖库、配置环境、处理编译错误和生成针对Android的交叉编译版本。务必查阅文档以确保正确设置和执行每个步骤。
3. SDL开发笔记(一):SDL介绍、编译使用以及工程模板
若该文为原创文章,未经允许不得转载 原博主博客地址: blog.csdn.net/qq2149793...
Qt开发专栏:三方库开发技术(点击传送门)
无 下一篇:持续补充中…
前言
开发过程中,需要操作一些硬件,如播放音频、播放视频,SDL作为通用的C库,可以实现同一套代码操作设备。
SDL简介
Simple DirectMedia Layer是一个跨平台的开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。它用于视频播放软件、模拟器和流行游戏,包括Valve获奖目录和许多不起眼的捆绑游戏。 SDL正式支持Windows、macosx、Linux、iOS和Android。源代码中可以找到对其他平台的支持。 SDL是用C++编写的,用C++来工作,并且还有其他几种语言的绑定,包括C语言和Python。 sdl2.0是在zlib许可下发布的。此许可证允许您在任何软件中自由使用SDL。
SDL下载
当前最新的版本2.0.12,官方地址: http://www.libsdl.org 下载版本包含了2.0.12版本的windows(zip)和linux(tar.gz)源文件 CSDN下载地址: download.csdn.net/downl... QQ群:1047134658(点击“文件”搜索“SDL”,群内与博文同步更新)。
SDL编译
步骤一:解压文件夹
步骤二:使用CMake配置项目
配置路径,勾选配置相关的选项,然后点击配置:
配置生成工程的编译器类型和具体的编译器,如下图:
选择Qt5.9.3,mingw32的c和c++编译器,如下图:
生成工程,如下图:
配置成功,然后“Generate”生成工程,如下图:
修改一下安装路径,方便提取模块化,再配置然后生成工程。
步骤三:使用mingw32编译
打开Q5的mingw32编译命令行:
切换到生成工程的路径:
开启四线程编译:
步骤四:编译成功
步骤五:安装install
模块化
Demo
该Demo为SDL模块化的测试环境,仅用于测试添加模块后,SDL环境配置是否成功。
测试代码
bool SDLManager::testEnv() {// 初始化SDL if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)== -1)) { // 初始化失败,打出错误 qDebug() << __FILE__ << __LINE__ << "Failed to SDL_INIT_VIDEO|SDL_INIT_AUDIO" << SDL_GetError(); return false; }else { qDebug() << __FILE__ << __LINE__ << "succeed to SDL_INIT_VIDEO|SDL_INIT_AUDIO"; } SDL_Quit(); return true; }
测试结果
工程模板:对应版本号v1.0.0
对应版本号v1.0.0:开发环境模板
无 下一篇:持续补充中…
原博主博客地址: blog.csdn.net/qq2149793... 原博主博客导航: blog.csdn.net/qq2149793... 本文章博客地址: blog.csdn.net/qq2149793...
4. SDL2教程【一】环境搭建
SDL是跨平台的图形库,适用于Windows, macOS, Linux, iOS, and Android等系统。它底层基于OpenGL或Direct3D,支持硬件加速,常用于游戏开发。SDL由C语言编写,兼容C++操作,并支持C#和Python绑定。SDL2.0版本允许静态连接,一个简单的HelloWorld程序静态连接后的体积约为2MB,内存占用大约8MB。
在开始SDL的环境搭建之前,你需要从SDL的GitHub发布页面下载源码。对于静态链接SDL库的需求,必须自己编译SDL源码。将源码解压到指定目录(例如D:\sdk\SDL),并使用cmake-gui工具进行配置。在配置中,选择源码目录(D:\sdk\SDL),并设置输出目录为(D:\sdk\SDL\build)。确保选择适当的Visual Studio版本进行生成,并在配置中勾选SDL_FORCE_STATIC_VCRT以支持静态链接。
接着,使用Visual Studio打开生成的解决方案文件(D:\sdk\SDL\build\SDL2.sln),在Release和Debug模式下重新生成All_BUILD子项目。在正确的目录(D:\sdk\SDL\build\Debug或D:\sdk\SDL\build\Release)下,你会找到生成的lib文件,这表示SDL已成功编译完成。
之后,使用Visual Studio创建一个C++空项目,并在项目中添加main.cpp文件。在工程属性对话框中,配置头文件搜索路径为包括SDL和其他库的目录。在Debug和Release配置下,设置连接器的附加依赖项,包括SDL2-staticd.lib、winmm.lib、version.lib等库。确保删除预处理器中的_CONSOLE标志,并将连接器子系统设置为"窗口"。清单工具的DPI识别设置为"每个监视器高DPI识别",C++语言标准设为"C++20",代码生成运行库设为"MTd"(Release模式下为"MT")。完成这些配置后,SDL环境搭建就完成了,下一部分将介绍如何使用SDL进行编程。