使用Android + JNI + OpenCV构建错误

时间:2015-03-20 06:50:17

标签: android opencv android-ndk java-native-interface

我是Android OpenCV + NDK开发的新手。我想找出Android中图像中最大的轮廓,我想在eclipse中构建JNI集成OpenCV Android项目。我已经包括

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include
${ProjDirPath}/../../sdk/native/jni/include
${NDKROOT}/platforms/android-9/arch-arm/usr/include
/usr/include/c++/4.6
/usr/include
${NDKROOT}/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.8/include

项目 - >属性 - > C / C ++一般 - >路径和符号 - >包含在GNU C ++下

如果我尝试构建项目,我仍然会收到构建错误。

将错误显示为' class std :: vector> >'没有名为' toArray'在Point point = contours.toArray();

这一行

这是什么错误。我该如何解决这个问题。

我的控制台输出是:

*增量构建配置项目默认为OpenCV-Square-Tracking-Android-JNI-master **** / home / dharaniinfotech / Downloads / android-ndk-r10d / ndk-build all Android NDK:警告:jni / Android.mk:native_sample:链接器标志中的非系统库:-lboost_system-gcc-mt-1_53 -lboost_regex-gcc-mt-1_53 -lboost_filesystem-gcc-mt-1_53 -lboost_date_time-gcc- MT-1_53
Android NDK:这可能会导致错误的构建。尝试使用LOCAL_STATIC_LIBRARIES
Android NDK:或LOCAL_SHARED_LIBRARIES代替列出了图书馆的依赖关系 Android NDK:当前模块
[armeabi-v7a] Compile ++ thumb:native_sample< = jni_part.cpp jni / jni_part.cpp:函数' jint Java_org_opencv_samples_tutorial3_Sample3Native_FindSquares(JNIEnv *,jobject,jlong​​,jint)': jni / jni_part.cpp:77:30:错误:' class std :: vector> >'没有名为' toArray' jni / jni_part.cpp:82:25:错误:不匹配'运算符[]' in' points [i]' make:*
[obj / local / armeabi-v7a / objs-debug / native_sample / jni_part.o]错误1

请帮助我知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

我错误地将

包括在内的第一件事
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
 ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include

他们应该像

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.8/include

转到代码分析(右键单击项目 - > C / C ++常规)并选择使用项目设置并取消选中所有复选框。