Android 使用OpenCV 共有三种方式 一种是直接使用 jar包 + so 这是最简单的 第二种 .a .so + .h 然后自己写java 中的jni接口 其实就是写第一种方法中jar包的内容 第三种 把所有源文件 和 头文件 放到里面 自己写编译脚本(就是生成第二种方式中的.a + .so,不过这里一般就直接生成.so了)
楼主用的方式是第二种 头文件 + .a +. so
头文件 不等于 源文件 头文件最主要的作用是描述 描述动态库和静态库中有哪些方法 以便让编译器将你写的源文件和库文件中函数链接起来 这样你才能够调用
至于.a 和.so 区别
.a 是静态库 win下叫.lib 但win下的.lib有两种 一种是只有符号表 就相当于函数声明 一种是既带符号表 又带函数的二进制码的
.so 是动态库 win下叫.dll 我见过Linux下有只带符号表的动态库 纯粹是让编译器链接用的
c程序生成过程 预处理->汇编->编译->链接 大概就这四步
也就是说楼主引入头文件 头文件只是告诉你 你所用库中有哪些函数 假如没有库文件 你就不可能链接成功