gpt4 book ai didi

java - 使用 Eclipse 构建 Android 原生 Opencv 给出 "undefined reference to ` cvCreateFileCapture'"

转载 作者:行者123 更新时间:2023-12-01 15:03:05 29 4
gpt4 key购买 nike

我正在开发一个带有 native 部分的应用程序,它使用嵌入式 OpenCV 从视频文件中提取帧。到目前为止,我收到此错误:

.../jni/ocv.c:12: undefined reference to `cvCreateFileCapture'

我的 Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := ocv
LOCAL_SRC_FILES := ocv.c

include $(BUILD_SHARED_LIBRARY)

应用程序.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 Juno、Windows。

IplImageCvCapture 得到解析,并且如果我删除带有 cvCaptureFromFile 的行,代码就会编译 - 所以我假设我在右边方式。我是 JNI 和 OpenCV 的新手。感谢你的帮助!谢谢。

最佳答案

不要让我自己的问题得不到解答..

1) 我已更改 Android.mk 以包含 SDK 中的 OpenCV.mk 并将 .so lib 包含到构建中:

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/文件夹。

3)将java代码更改为:

static {
System.loadLibrary("opencv_java");
System.loadLibrary("ocv");
}

错误已经消失。

关于java - 使用 Eclipse 构建 Android 原生 Opencv 给出 "undefined reference to ` cvCreateFileCapture'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353647/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com