Visual Studio 编译 Android 版本 SDL 步骤记录

只所以会用Visual Studio,是因为整个过程都不用编写编译脚本(CMakeList Or Android.mk),简洁中透出它的强大。 另外有一篇文章,记录如何在Android Studio中编译SDL2 - Andorid Studio 3.4 cmake 编译 SDL2

文章目录

    • 版本说明
    • 参考
    • 一、配置Visual Studio编译环境
    • 二、开始编译
    • 项目上传地址(码云)

版本说明

  • Visual Studio - 2017
  • SDL - 2.0.10
  • NDK - r15c
  • Android SDK platform >= 19

参考

  • SDL源码根目录下的Android.mk文件

  • 官方Visual Studio编译说明,点击查看下载好的网页 。

一、配置Visual Studio编译环境

  • 安装Android支持组件
    Visual Studio 编译 Android 版本 SDL 步骤记录_第1张图片

  • 下载SDL源码

  • 新建动态共享库(Android)项目,取名SDL2(编译之后库名为libSDL2.so),删除自动生成的文件以及取消预编译头使用。

Visual Studio 编译 Android 版本 SDL 步骤记录_第2张图片

二、开始编译

  • 解压源码,将源码src目录和include目录复制到项目SDL2目录下。
    Visual Studio 编译 Android 版本 SDL 步骤记录_第3张图片

  • 将以下所列Android相关源码包含在项目中,保留 src/hidapi (后面有用),其他可以删掉:

    src/*.c
    src/audio/*.c
    src/audio/android/*.c
    src/audio/dummy/*.c
    src/audio/openslES/*.c
    src/atomic/*.c
    src/core/android/*.c
    src/cpuinfo/*.c
    src/dynapi/*.c
    src/events/*.c
    src/file/*.c
    src/filesystem/android/*.c
    src/haptic/*.c
    src/haptic/android/*.c
    src/joystick/*.c
    src/joystick/android/*.c
    src/joystick/hidapi/*.c
    src/libm/*.c
    src/loadso/dlopen/*.c
    src/power/*.c
    src/power/android/*.c
    src/render/*.c
    src/render/*/*.c
    src/sensor/*.c
    src/sensor/android/*.c
    src/stdlib/*.c
    src/test/*.c
    src/thread/*.c
    src/thread/pthread/*.c
    src/timer/*.c
    src/timer/unix/*.c
    src/video/*.c
    src/video/android/*.c
    src/video/khronos/*.c
    src/video/yuv2rgb/*.c

    SDL 还依赖两个外部库,cpufeatures(设备CPU信息) 和 hidapi(HID设备API)。

    PS (hidapi官方说明) :Within the latest SDL2 development code, HIDAPI joystick drivers have been added to this library for providing more consistent support for the Xbox, PlayStation 4, and Nintendo Switch Pro controllers. HIDAPI is a multi-platform library for HID devices on Windows/Linux/macOS and now this unified code is used across platforms.

    • 添加cpufeatures


      我们查看Android.mk编译脚本,SDL库是以静态库的方式依赖于cpufeatures,所以我直接将cpufeatures源码加入到SDL源码中,一起进行编译。您也可以单独编译,再进行依赖添加。

    将Android NDK目录下的cpu-features.ccpu-features.h拷贝到VS项目cpuinfo目录下。

Visual Studio 编译 Android 版本 SDL 步骤记录_第4张图片

Visual Studio 编译 Android 版本 SDL 步骤记录_第5张图片

  • 添加hdiapi
    SDL库是以动态库的方式依赖于hdiapi,所以必须单独编译libhdiapi.so库,hdiapi库只包含一个文件,链接一个log库,大家自行编译。文末有编译好hdiapi库下载地址。

    Visual Studio 编译 Android 版本 SDL 步骤记录_第6张图片

    在VS项目src目录下新建hidapi目录,并在SDL源码src/hidapi/hidapi目录下找到hidapi.h头文件复制到新建的hidapi目录下,并修改SDL_hidapijoystick_c.hhidapi.h的包含路径。强迫症哈 ~~~ 大家可以直接将hidapi.h头文件包含在项目中即可,src/hidapi目录下的其他文件可以删除掉了。


    至此,所有源码已经全部包含在项目中。

  • 编译器配置

    • 设置所采用的C++标准
      Visual Studio 编译 Android 版本 SDL 步骤记录_第7张图片

    • 将SDL编译需要链接的动态库添加到链接器的附加选项中,并将libhidapi.so库存放目录加入到附加库目录中,我把它放在项目lib\下。

    -ldl -lGLESv1_CM -lGLESv2 -llog -landroid -lm -lOpenSLES -lhidapi

    Visual Studio 编译 Android 版本 SDL 步骤记录_第8张图片

    • 将编译器选项添加到预处理器定义中

    GL_GLEXT_PROTOTYPES

Visual Studio 编译 Android 版本 SDL 步骤记录_第9张图片

  • 最后一步
    生成你所需平台的so库。
    Visual Studio 编译 Android 版本 SDL 步骤记录_第10张图片

项目上传地址(码云)

  • armeabi-v7a 平台so库

  • 工程代码

    https://gitee.com/canber/YCY-src/blob/master/SDL2compile-visual-studio.zip

你可能感兴趣的:(Android音视频)