静态链接OpenCV 2.4.3.2

时间:2013-02-13 17:42:27

标签: 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.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

任何人都知道“LOCAL_SRC_FILES指向丢失的文件”可能意味着什么?

PS如果我删除行

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on

它编译得很好,但后来我无法静态链接

2 个答案:

答案 0 :(得分:1)

找到解决方案。信不信由它是Application.mk的问题,而不是Android.mk。我已经设置了

APP_ABI := all

以前,甚至没有认为它会影响静态的构建过程。我最终将其更改为

APP_ABI := armeabi-v7a

现在,一切正常。请注意,我最终不需要OPENCV_CAMERA_MODULES:= on,我相信只有你从JNI调用相机,我不是

答案 1 :(得分:0)

LOCAL_SRC_FILES显示您的本机代码所在的文件。如果您使用本机OpenCV代码,则必须在此处添加cpp文件的名称。 如果您没有本机部分,则应将OpenCV库添加到项目的libs文件夹中。 (在静态初始化的情况下)。有关详细信息,请查看this page