2013-02-13 2 views
0

Я хотел бы статически связать OpenCV (2.4.3.2) с моим проектом. Сейчас мой Android.mk выглядит такСтатическое связывание OpenCV 2.4.3.2

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 

компилируется нормально, но я не могу статически

ответ

1

Найдено решение. Верьте или нет, это проблема с Application.mk, а не с Android.mk. Я установил

APP_ABI := all 

Раньше и даже не считалось, что это может повлиять на процесс сборки этого статически. Я закончил тем, что менял его на

APP_ABI := armeabi-v7a 

И теперь все работает нормально. Заметьте, что мне не нужно было OPENCV_CAMERA_MODULES: = on, я считаю, что это только если вы вызываете камеру из JNI, что я не

+0

это решение не работает для меня, хотя мои приложения.mk и android.mk такие же, как у вас, но он по-прежнему требует загрузить opencvmanager для запуска приложения на Android – ARG

0

LOCAL_SRC_FILES показать файл, где ваш родной код находится. Если вы используете собственный код OpenCV, вы должны добавить здесь имя своего файла cpp. Если у вас нет родной части, вы должны добавить библиотеку OpenCV в папку libs вашего проекта. (в случае статической инициализации). Пожалуйста, уточните this page.

+0

Правильно, я использую некоторый собственный opencv, и это правильное имя файл. Как я уже сказал, если я удаляю эти две строки вверху, он компилируется и работает нормально (включая вызов файлов JNI). – Jameo

+0

Теперь я вижу, поэтому вы можете запускать программу с динамическим связыванием, но не со статикой. Я думал, что вы не можете ссылку и запустить вообще. Для статической привязки вам нужно установить OPENCV_LIB_TYPE: = STATIC в Android.mk. – rics

+0

Я поиграл, добавив, что сам по себе я все равно получаю ту же ошибку (то есть добавляю ее между включениями вверху). Я также пробовал это с двумя другими, как до, так и после, поэтому я не думаю, что это вещь порядка – Jameo

Смежные вопросы