0

我想将 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

它编译得很好,但是我不能静态链接

4

2 回答 2

1

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

APP_ABI := all

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

APP_ABI := armeabi-v7a

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

于 2013-02-13T20:47:53.223 回答
0

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

于 2013-02-13T18:07:51.727 回答