在编译好的SDL2库引入SDL2_image库的编译步骤

1 .前言

  由于在使用SDL2开发的过程,需要加载png图片,而SDL2本身不提供加载png图片的功能实现。所以需要在引入SDL2_image库。

  如果想查看Android Studio下怎么编译SDL2库,请查看 http://www.cnblogs.com/yongfengnice/p/7827040.html ,因为SDL2_image的编译是基于编译好的SDL2库的基础上添加的。

2. 下载并解压缩SDL2_iamge库

  下载链接:https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.1.zip

  解压缩后得到SDL2_image-2.0.1目录,SDL2_image的全部源代码就在里面。

  附:我下载最新的SDL2_image-2.0.2.zip编译不通过,我换回SDL2_image-2.0.1.zip编译,最新版估计有问题,也可能是我环境的问题。

3. 打开按照这个链接http://www.cnblogs.com/yongfengnice/p/7827040.html编译好的SDL2项目,在jni目录下创建名称为SDL2_image的目录下,并将上面的SDL2_image-2.0.1目录下的所有文件和acinclude子目录和external子目录拷贝进去(也可以全部拷贝进去)。如图:

   

  右边只是一部分截图,太长了,没必要全部截图。其实我并不是拷贝进去的,细节的话会发现我的SDL2_image目录上有个箭头,那是因为它只是一个快捷方式。我生成一个快捷方式指向SDL2_image的源代码,就不用费力气去拷贝了嘛。

  打开cmd窗口,cd进入jni目录下,执行 mklink /D SDL2_image C:\cpp\dev_lib\SDL2_image-2.0.1 ,成功会提示 symbolic link created for SDL2_image <<===>> C:\cpp\dev_lib\SDL2_image-2.0.1,这样就会在jni目录下生成一个名称为SDL2_image的快捷方式指向SDL2_image-2.0.1目录了。

  mklink命令的使用方式如下所示:

    

4. 修改src下的Android.mk 文件,如下:

  4-1. 修改include

    将 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include

    修改为 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include $(LOCAL_PATH)/../SDL2_image/

  4-2. 修改依赖

    将 LOCAL_SHARED_LIBRARIES := SDL2

    修改为 LOCAL_SHARED_LIBRARIES := SDL2 SDL2_image

5. 点击编译,顺利的话,即可生成SDL2_image库,也有可能出现如下错误:

  ‘machine/cpu-features.h‘ file not found  //这是算是JPEG库的一个bug,因为我们只需要png库,所以禁止掉JPEG库不受影响。修改如下:

    找到jni/SDL2_image目录下的Android.mk文件,将里面的 SUPPORT_JPG ?= true 改为 SUPPORT_JPG ?= false 即可。再次编译应该会成功。

6. 编译成功后,java代码加载SDL2_image库,修改如下:

  

时间: 2024-10-08 10:31:35

在编译好的SDL2库引入SDL2_image库的编译步骤的相关文章

Android Studio项目引入外部库注意事项(PullToRefresh)

Android Studio开发App项目时引入第三方库是个比较麻烦的事情.之前导入Volley就折腾了好久,导入下拉刷新控件PullToRefresh时又碰到了各种问题.在此记录一下,以便查阅. 一.导入PullToRefresh 1.将PullToRefresh克隆到本地 git clone https://github.com/chrisbanes/Android-PullToRefresh 2.克隆到本地后library目录复制到app同级目录下,并将名称改为PullToRefresh

windows下sqlite3静态库和动态库的编译

1.下载sqlite3源码:http://www.sqlite.org/download.html 主要是sqlite-amalgamation-XXXXXXX.zip.sqlite-dll-win32-x86-XXXXXXX.zip.sqlite-dll-win32-x64-XXXXXXX.zip 动态库编译: ps:如果没有特殊要求,可直接使用下载的sqlite-dll-*********.zip内的dll,那如果不放心就自己编译. 1.使用vs2010创建win32工程,然后选择DLL和空

Clion(CMake工具)中如何引入第三方库

前言 因为自己最近在学Redis,想要在C++中获取到Redis内存数据库中的数据,需要使用Redis客户端来连接Redis传输命令并接收数据,在Redis官方网站上推荐的客户端中选择了acl-redis.而Clion是一款非常优秀的C++集成开发环境,Clion选择了CMake作为构建工具,所以需要在CMake配置文件中进行配置. 如何配置 CMake的所有配置都写在一个叫CMakeLists.txt的文件当中,所有的配置都写在该文件当中. 这是我的工程目录结构,Include文件夹为acl-

linux上静态库和动态库的编译和使用(附外部符号错误浅谈)

主要参考博客gcc创建和使用静态库和动态库 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别,参考<Linux程序设计> 1. 静态库也被称为归档文件(archive,因此创建命令是ar),编译器和链接器负责将程序代码和静态库结合在一起组成单独的可执行文件: 但是缺点是许多应用程序同时运行并使用来自同一个静态库的函数时,内存中就会有一个函数的多份副本,而且程序文件自身也有多份同样的副本,这将消

android studio引入so库方法

在Android Studio中引入so库,只需在app/jniLibs下放入so文件,然后在Module的build.gradle中加入: sourceSets { main { jniLibs.srcDirs = ['libs'] } } 完整的build.gradle如下: apply plugin: 'com.android.library' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultCon

g++编译使用生成静态库和动态库(Linux)

参考文献: Linux下g++编译与使用静态库和动态库 用g++编译生成动态链接库*.so的方法及连接(多个.cc生成一个*.so) 占坑

Swift项目引入第三方库的方法

以下,将创建一个Swift项目,然后引入3个库: Snappy 简化autolayout代码的库 Alamofire HTTP网络库,AFNetworking作者写的 SDWebImage 图片加载,objc项目,通过头文件bridge方式供swift使用 其中,前两个是Swift的库,SDWebImage是Objc的库. 源代码见:https://github.com/MarshalW/SwiftWith3rdLibDemo 项目跑起来是这个样子: 做下面步骤之前,需要让自己的项目是git项目

【Linux 相关】 静态库与动态库的编译和使用

参考博客 http://www.cnblogs.com/feisky/archive/2010/03/09/1681996.html 上述博客中关于静态库与动态库的讲解,很清晰! 库的定义: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库和动态库的区别 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数

Windows下zlib库和libPng库的编译和使用

关于zlib库和libpng是干嘛的,我就不说了,度娘和谷歌都能告诉你.这里主要记录下windows下如何利用vs2010编译和使用这两个库. 一.zlib库的编译 首先要下载这个库,这个谷歌和百度也都可以找得到的.我下载的是zlib-1.2.5,下载完解压出来即可.下边就开始编译吧.(包括动态库和静态库两种) 1. 首先开启VS2010的Command Prompt (32bit),也就是命令提示窗口. 2. 进入到zlib-1.2.5/contrib/masmx86目录,执行bld_ml32