建立本地OpenCV进行的Android与Eclipse给人"未定义的引用`cvCreateFileCapture'" [英] Building native Opencv for Android with Eclipse gives "undefined reference to `cvCreateFileCapture'"
问题描述
我正在开发与使用嵌入式的OpenCV提取的视频文件帧本地部分的应用程序。到目前为止,我得到这个错误:
I'm developing an app with native part which uses embedded OpenCV to extract frames from video file. So far I'm getting this error:
.../jni/ocv.c:12: undefined reference to `cvCreateFileCapture'
我的Android.mk:
My Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ocv
LOCAL_SRC_FILES := ocv.c
include $(BUILD_SHARED_LIBRARY)
Application.mk:
Application.mk:
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi
ocv.c:
#include <string.h>
#include <jni.h>
#include <stdio.h>
#include <dlfcn.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
jstring Java_com_ice_salvador_MainActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis) {
IplImage* currFrame = 0;
CvCapture* cap = 0;
cap = cvCaptureFromFile("/mnt/sdcard/vvv.3gp"); //test video
return (*env)->NewStringUTF(env, "Hello from native code!");
}
我使用的OpenCV-2.4.3-Android的SDK,Android的NDK R8B,Eclipse的朱诺,Windows操作系统。
I'm using OpenCV-2.4.3-android-sdk, Android NDK r8b, Eclipse Juno, Windows.
的IplImage
, CvCapture
得到解决,code编译如果删除符合 cvCaptureFromFile
- 所以我想我在正确的道路。我是新来JNI和OpenCV。鸭preciate您的帮助!谢谢你。
IplImage
, CvCapture
gets resolved and the code compiles if I remove the line with cvCaptureFromFile
- so I assume I'm on the right way. I'm new to JNI and OpenCV. Appreciate your help! Thanks.
推荐答案
不离开我自己的问题没有答案。
Not to leave my own question unanswered..
1)我已经改变了Android.mk从SDK包括OpenCV.mk并将其列入。所以lib放到构建:
1) I've changed Android.mk to include OpenCV.mk from SDK and to include .so lib into the build:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include c:\dev\OpenCV-2.4.3-android-sdk\sdk\native\jni\OpenCV.mk
LOCAL_MODULE := ocv
LOCAL_SRC_FILES := ocv.c
LOCAL_LDLIBS += -Lc:\dev\OpenCV-2.4.3-android-sdk\sdk\native\libs\armeabi
include $(BUILD_SHARED_LIBRARY)
#LOCAL_PATH := /home/spatialite/jni
include $(CLEAR_VARS)
LOCAL_MODULE := libopencv_java
LOCAL_SRC_FILES := libopencv_java.so
include $(PREBUILT_SHARED_LIBRARY)
2)复制到libopencv_java.so JNI /文件夹。
2) Copied libopencv_java.so to jni/ folder.
3)更改的java code为:
3) Changed java code to:
static {
System.loadLibrary("opencv_java");
System.loadLibrary("ocv");
}
和错误已经一去不复返了。
And the error has gone.
这篇关于建立本地OpenCV进行的Android与Eclipse给人&QUOT;未定义的引用`cvCreateFileCapture'&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!