我想将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
它编译得很好,但后来我无法静态链接
答案 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。