最近因为一个项目需要在Android中用到OpenCv,搞了几天才编译成功,遇到了一些问题,先记下来以后可以查看。
1.无法解析#include <jni.h>
这个错误是因为NDK的include路径没有加入,project->properties->c/c++ General->path and symbols->include栏目下把E:\ndk\platforms\android-14\arch-arm\usr\include加入,我随便挑的一个platform。
2.无法找到core.hpp,这个都怪我,我学vc配置环境那样,把include,include/opencv,include/opencv2都加入进来了,死活找不到core/core.hpp。去掉include/opencv和include/opencv2后,用opencv2/core/core.hpp就找到了,我承认我很水。
3.NDK对于RTTI,标准库和exception的支持。
编译的时候提示找不到<algorithm.h>,-fno-rtti这些错误,这个的解决办法是在Application.mk中加入下面几句:
APP_STL := gnustl_static(标准库的支持),APP_GNUSTL_FORCE_CPP_FEATURES :=exceptions rtti(对exception和rtti的支持).关于Application的使用,可以参考这篇文章:http://blog.csdn.net/flydream0/article/details/7433786
4.编译没问题,程序启动就会挂掉,提示libopencv_java.so not found,在Android.mk的include $(CLEAR_VARS)后面加入OPENCV_LIB_TYPE:=STATIC,不过我对Linux的共享库不是太了解,我想动态的加载libopencv_java.so。
主要就是上面的一些问题,我没有用opencv官方给的那些调用方式,第一次写这种类型的博客,欢迎讨论。