使用Crystax NDK编译Ceres-Solver时遇错误求助
最近折腾在Android平台上用Crystax NDK编译Ceres-Solver,还要适配已集成的OpenCV环境,终于跑通了完整流程,分享给大家:
适配Android OpenCV的Ceres-Solver编译与集成步骤
1. 调整STL配置适配OpenCV
在编译Ceres-Solver的NDK配置文件里,把原本的APP_STL := c++_static改成:
APP_STL := gnustl_static
这一步是关键,因为Android版OpenCV依赖的是gnustl,保持STL版本一致才能避免后续链接时的冲突问题。
2. 编译生成Ceres静态库
改完配置后,用Crystax NDK执行编译流程,成功生成libceres.a静态库文件。
3. 把Ceres集成到Android项目
- 把编译好的
libceres.a复制到项目的jni目录下; - 在项目的
Application.mk里添加以下配置:LOCAL_LDLIBS += libceres.a LOCAL_SRC_FILES += Test.cpp
4. 执行项目编译
确保Crystax NDK已经添加到系统的PATH环境变量中,然后在项目根目录下运行:
ndk-build
Test.cpp中使用Ceres的代码示例片段
struct CostFunctor { template <typename T> bool operator()(const T* const x, T* residual) const { // 这里可以根据需求实现你的代价函数逻辑 residual[0] = T(10.0) - x[0]; return true; } };
内容的提问来源于stack exchange,提问作者潘晓宇
相关产品推荐
相关产品推荐

