向android移植opencv的错误笔记
来源:互联网 发布:pps网络电视下载 编辑:程序博客网 时间:2024/05/16 12:12
至于opencv的环境配置这里就不再啰嗦了,网上有很多这样的文章,也很好,请参考那些优秀的博客。
第一个问题:<vector>这个文件无法找到。我先试了试http://stackoverflow.com/questions/4893403/cant-include-c-headers-like-vector-in-android-ndk这上面说的方法,具体就是在application..mk中添加APP_STL := gnustl_static ,但这种方法不奏效啊,依然报“ fatal error: vector: No such file or directory”。我查了查android官方的例子有没有使用<vector>的例子,查了查还真有,我的路径是“D:\android\android-ndk-r8e\tests\device\test-gnustl-copy_vector_into_a_set”里面有一个使用<vector>的例子,我试着使用自己的cygwin编译,并且通过了,这说明我的cygwin没有问题。
我把这个例子的android.mk和application.mk抄写到我的工程里,还是出现 fatal error: vector: No such file or directory”,最后的差别就是扩展名android的官方例子是cpp,我的扩展名是c,我改过来了,然后编译成功了。
第二个问题:把c改成cpp后另一个问题出现了,”operand of '->' has non-pointer type 'JNIEnv {aka _JNIEnv}' “又报了这个错,原来cpp文件android的ndk它就默认这是个c++文件,使用c++接口,如果是c,ndk默认在编译时使用c接口因此造成这种问题。改正后的截图是:
这个问题的参考网址:http://bbs.csdn.net/topics/390355890
问题3:使用多个cpp文件编译。把一个大的功能分散到多个函数中,并且把每个函数写在一个cpp文件中,这符合c语言的模块化思想,也便于程序员看代码。可能语言表达不清楚,直接上图:这个jni文件夹中有两个cpp文件,一个是jni_part.cpp,一个是test.cpp.
如果在vs2010中编辑的话不需要做任何的改动,直接在test.hpp中声明以下,然后再在jni_part.cpp中包含这个test.hpp文件即可,但是无论在ndk,还是在gcc中,这种简单的做法是行不通的,在gcc中需要更改make文件,在ndk中则需要改动Android.mk文件。画三角的是只有jni_part.cpp时的mk文件,当加入test.cpp后需要添加对号所在的那行文字。并且这一行的位置也有要求,必须在include$()和最后的一个include$()之间。
- 向android移植opencv的错误笔记
- OpenCV简介以及向Android平台的移植
- opencv的移植过程笔记
- OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台
- Android移植的错误及解决方案
- cocos2dx项目向Android移植
- cocos2d-x向android移植的问题汇总
- OpenCV的移植
- OpenCV的移植
- opencv的arm移植
- 向android环境中添加opencv library的步骤
- Android OpenCV 遇到的错误:Unresolved inclusion
- DM6446 DSP端OPENCV移植错误
- Android平台移植ffmpeg的一些笔记
- Debian到Android的移植笔记
- cocos2dx移植android笔记
- Android 蓝牙移植笔记
- 嵌入式学习笔记(19)——AVR单片机之C51向ICCAVR的移植
- (四)实验2-3-3 信号处理总结以及Linux下支持的信号列表
- 同一台机器上安装多个Tomcat
- windows API一日一练(5)
- AMR文件格式分析
- 矩阵乘法和二分求阶乘 解线性递推问题(大数据的递推)
- 向android移植opencv的错误笔记
- lucene索引文件的格式(2)
- App"确定"按钮应该在左边还是右边?
- C#与C++之间的类型对应表
- 总结一下排序算法
- strcmp的源码
- lucene的索引文件的格式(1)
- Java中的串行化
- c#初识(一)