Android 静态链接OpenCV 2.4.3.2

Android 静态链接OpenCV 2.4.3.2,android,opencv,Android,Opencv,我想将OpenCV(2.4.3.2)静态链接到我的项目。现在我的Android.mk看起来像这样 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on include /Users/jamiematthews/Documents/Android-Projects/OpenCV-2.4.3-android-sdk/sdk/native/jni

我想将OpenCV(2.4.3.2)静态链接到我的项目。现在我的Android.mk看起来像这样

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on

include /Users/jamiematthews/Documents/Android-Projects/OpenCV-2.4.3-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := jni_part
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS +=  -llog -ldl
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog 
include $(BUILD_SHARED_LIBRARY)
这会抛出错误:

Android NDK: ERROR:/Users/jamiematthews/Documents/workspace/AuthentiGuard/jni/Android.mk:on: LOCAL_SRC_FILES points to a missing file    
/Users/jamiematthews/Documents/android-ndk-r8d/build/core/prebuilt-library.mk:43: *** Android NDK: Aborting    .  Stop.
Android NDK: Check that /Users/jamiematthews/Documents/Android-Projects/OpenCV-2.4.3-android-sdk/sdk/native/jni/../libs/mips/libon.so exists  or that its path is correct
有人知道“本地文件指向丢失的文件”是什么意思吗

PS,如果我删除这些行

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on

它编译得很好,但是我不能静态链接本地的SRC文件显示本地代码所在的文件。如果使用本机OpenCV代码,则必须在此处添加cpp文件的名称。
如果没有本机部件,则应将OpenCV库添加到项目的libs文件夹中。(在静态初始化的情况下)。请查看详细信息。

找到了解决方案。信不信由你,这是Application.mk的问题,而不是Android.mk的问题。我已经准备好了

APP_ABI := all
以前,甚至没有考虑到它可能会静态地影响这个系统的构建过程。最后我把它改成了

APP_ABI := armeabi-v7a

现在,一切正常。请注意,我最终不需要OPENCV_CAMERA_模块:=on,我相信只有当您从JNI调用摄像头时,才需要它,我没有

对,我确实使用了一些本机OPENCV,这是文件的正确名称。正如我所说的,如果我删除上面的两行,现在我看到它编译并运行良好(包括调用JNI文件),因此您可以使用动态链接而不是静态链接运行程序。。我以为你根本无法链接和运行。对于静态链接,您需要在Android.mk中设置OPENCV_LIB_TYPE:=static。我已经尝试过添加它,但它本身仍然会出现相同的错误(即,在顶部的包含之间添加它)。我也试过其他两个,前后都试过,所以我不认为这是一个订单问题。你们把opencv动态库复制到项目的libs目录了吗?我刚刚发现,我相信这只是我的应用程序ABI格式的问题。当我仔细看了一下我得到的错误后,我想检查一下它是为哪个平台构建的。谢谢你的帮助!虽然我的application.mk和android.mk与您的相同,但此解决方案对我不起作用,但它仍然要求下载opencvmanager以便在android上运行该应用程序