【Ceres Solver for android】少年乘勇气,百战过乌孙。这篇文章主要讲述Ceres Solver for android相关的知识,希望能为你提供帮助。
最近开发中,需要对图片做一些处理与线性技术,这时就用到了Ceres Solver。如何把Ceres Solver集成到android里呢? 官网给了一个解决方案,简洁明了:
Download the
Android
NDK
version
r9d
or later. Run
ndk-build
from inside the
jni
directory. Use the
libceres.a
that gets created.(意思是:下载NDK r9d 或更新版本,然后进入 下载最新ceres-solver包的jni目录里,运行ndk-build 得到 libceres.a 静态包)
步骤如下:
1、添加NDK的环境变量,不懂的可以搜索安装教程。
2、运行 =》cmd,打开命令行窗口, cd 进入到下载ceres-solver包的jni目录里,运行 ndk-build
报:jni/Android.mk:80: *** Ceres requires NDK version r9d or greater . Stop. 错误!
查看 Android.mk 80 行,可以知道它是判断当前NDK的版本,运行了 jni 目录下的shell脚本(assert_ndk_version.sh)。
但是我发现我的NDK已经是最新了,为什么还报这异常呢? 查看当前的NDK版本,可以点击这。
认真查看了 assert_ndk_version.sh 文件的内容,发现,它是查找NDK根目录下的一个叫 RELEASE.TXT 文件, 但我们没有。所以新建一个, 然后在里面加入 r14b (64-bit) (替换成你的NDK版本)
在MAC 系统上可以跑通,在windows 上还会继续报上面的错误,因为windows 不能直接跑shell脚本。 直接了当,Android.mk 79—81行 用 # 注释掉。 然后就会编译出 libceres.a 静态文件。
但是这样编译出来的静态文件,在运用的时候,还是会报错,打开 ceres-solver包的jni目录下的
Application.mk文件,可以看到:
APP_CPPFLAGS += -fno-exceptions
APP_CPPFLAGS += -fno-rtti
APP_STL := c++_static
名称 | 说明> | 功能 |
libstdc++(默认) | 默认最小系统 C++ 运行时库。 | 不适用 |
gabi++_static | GAbi++ 运行时(静态)。 | C++ 异常和 RTTI |
gabi++_shared | GAbi++ 运行时(共享)。 | C++ 异常和 RTTI |
stlport_static | STLport 运行时(静态)。 | C++ 异常和 RTTI;标准库 |
stlport_shared | STLport 运行时(共享)。 | C++ 异常和 RTTI;标准库 |
gnustl_static | GNU STL(静态)。 | C++ 异常和 RTTI;标准库 |
gnustl_shared | GNU STL(共享)。 | C++ 异常和 RTTI;标准库 |
c++_static | LLVM libc++ 运行时(静态)。 | C++ 异常和 RTTI;标准库 |
c++_shared | LLVM libc++ 运行时(共享)。 | C++ 异常和 RTTI;标准库 |
推荐阅读
- android平台sdk接入的一些坑
- Android上HotPatch热修复的安全问题
- Android开始之 数据库存储
- 电商建站费用(建立一个电子商务网站需要多少钱())
- 优化图像的7种方法(WordPress中的WebP是什么())
- 2021年8个最佳WordPress亚马逊联盟插件合集
- Dreamweaver与WordPress(哪个更适合构建网站())
- Wix和WordPress对比(哪个更好(有什么区别?哪一个适合你?))
- WordPress自动打标签(如何自动标记WordPress文章())