
最近在忙项目实在是好久没写博客啦项目主要是做android的一些移植工作之前对android开发并无感也就没怎么涉及通过这阵子的接触还是遇到不少的坑下面就开一篇新的博客作为对这个项目的一个收获吧。有些并不是原创都是看了好多人的博客有时候看太多了就不记得是谁的方法了如果需备注请私聊LZ1. could not load library libopencv_java.so这是跑利用opencv的c代码在jni上交叉编译时出的错交叉编译实在是个神坑心理不强大者切莫入坑错误有的实在千奇百怪。而且LZ对eclipse并没有接触很多Javaandroid对LZ也都是新的挑战诶扯远了快回来O(∩_∩)O哈哈~解决利用NDK开发android版本的opencv应用dlopen failed: could not load library libopencv_java.so在android opencv开发时,总是遇到 NDK编译后的JNI的xxx.so模块需要libopencv_java.so但是无法加载libopencv_java.so文件.解决方法是编辑Android.mk文件,在其中添加OPENCV_INSTALL_MODULES:on这样编译的lib时候会自动加载libopencv_java.so文件到libs文件夹下.问题解决!2.cbuf env-GetIntArrayElements(buf, false)cbuf env-GetIntArrayElements(buf, false); 编译不过这个应该是NDK版本的问题其实LZ也没有仔细去查资料到底是什么问题总之把问题解决了就可以了我在重新配置的时候也遇到了这个问题无非就是传入的参数和函数可以接收的参数不匹配那么给它传一个匹配的就好了。现在改成了cbuf env-GetIntArrayElements(buf, NULL)或者cbuf env-GetIntArrayElements(buf, 0);这样就可以编译通过了3,作为过来人的建议慎重直接拿别人封装好的project直接使用因为别人的project大多数都是编译好.so文件的如果要自己在别人代码上进行一部分的修改那么还是最好自己新建一个工程哪怕再把源码复试过去不然之前的代码的各种路径设置报错会很崩溃对于LZ这中android小白简直会欲哭无泪。4.jni/G2OBA.cpp:3:20: fatal error: iostream: No such file or directory #include这个应该是做NDK开发经常出现的一个问题了就是在javah之后生成对应的头文件后jni中生成的头文件不认jni.h或者不认一些c的问题解决方案是在Application.mk文件中添加以下语句APP_STL:gnustl_staticsystem - 使用默认最小的C运行库这样生成的应用体积小内存占用小但部分功能将无法支持stlport_static - 使用STLport作为静态库这项是Android开发网极力推荐的stlport_shared - STLport 作为动态库这个可能产生兼容性和部分低版本的android固件目前不推荐使用。gnustl_static - 使用 GNU libstdc 作为静态库默认情况下STLPORT是不支持C异常处理和RTTI所以不要出现 -fexceptions 或 -frtti 如果真的需要可以使用gnustl_static来支持标准C的特性但生成的文件体积会偏大运行效率会低一些。支持C异常处理在Application.mk中加入 LOCAL_CPPFLAGS -fexceptions这句同理支持RTTI则加入LOCAL_CPPFLAGS -frtti这里再次提醒大家第二条说的使用gnustl静态库而不是stlport。强制重新编译 STLPort 在Application.mk中加入 STLPORT_FORCE_REBUILD : true 可以强制重新编译STLPort源码由于一些原因可能自己需要修改下STLPort库一般普通的开发者无需使用此项5.textview cannot be resolved to a type 解决方法之后看了下配套的代码,才知道原来发现缺少了两个包,于是加上importAndroid.widget.Button;importandroid.widget.TextView;或者importandroid.widget.*;6. Project has no project.properties file! Edit the project properties to set one error7.The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object.8.Fix the build path then try building this project Unknown Java Problem上面3个错误是LZ在调用自己已经配好的project的时候在另外一个workspace下导入工程是报的错误其实很尴尬都不晓得为啥不通过后来发现工程中少了android.jar只要选择自己合适的开发平台把android.jar添加进来就好(≧▽≦)/啦啦啦9.error: expected ‘’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘void’这个报错也是LZ头一次见查了快一个半小时解决方案首先LZ这个代码已经在QT上运行通过所以肯定不存在什么代码的原则性问题最后在一个帖子下面的评论中看到了一个可能结果一试果然问题解决问题的关键在于在重复包含了头文件这在第三方库使用时特别容易出现这类问题即头文件重名导致程序无法编译通过阿西吧LZ的一个半小时啊10 error: undefined reference to ‘calcImgProjFullR’这个错误其实都是一个类型的错误就是在Android.mk文件中你的source文件少写了或者就是你的头文件没有包含好这个得看具体少哪些回头加上这些少的源文件或者头文件就好啦11.Fatal signal 11(SIGSEGV) at 0x50776a97(code 2), thread 17256 (example.test)这是LZ做了一件很愚蠢的事本来想拿文件的指针的结果取到了文件的值文件有八万多个点的坐标定义的char *,直接超出范围了。。。最近算法没怎么看倒是尽做c第三方库的代码移植了感觉可以再写一个关于c android的移植专题比如说在linux下都特别容易安装出错的g2o???等LZ忙过这阵再说。。。