2013-02-13 1 views
0

Je voudrais relier statiquement OpenCV (2.4.3.2) à mon projet. En ce moment, mon Android.mk ressemble à ceciLiaison statique 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) 

qui jette les erreurs:

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 

Quelqu'un sait ce que « les points LOCAL_SRC_FILES à un fichier manquant » pourrait signifier?

PS si je retire les lignes

OPENCV_CAMERA_MODULES:=on 
OPENCV_INSTALL_MODULES:=on 

il compile bien, mais je ne peux pas lier statiquement

Répondre

1

Trouvé la solution. Croyez-le ou non c'était un problème avec Application.mk, pas Android.mk. J'avais mis

APP_ABI := all 

Précédemment, et même pas considéré qu'il pourrait effectuer le processus de construction de ceci statiquement. J'ai fini par le changer en

APP_ABI := armeabi-v7a 

Et maintenant, tout fonctionne bien. Notez que je n'ai pas besoin d'OPENCV_CAMERA_MODULES: = on, je crois que c'est seulement si vous appelez la caméra de JNI, ce que je ne suis pas

+0

cette solution ne fonctionne pas pour moi si mon application.mk et android.mk est la même chose que la vôtre, mais il est encore difficile de télécharger opencvmanager pour l'exécution de l'application sur Android – ARG

0

LOCAL_SRC_FILES afficher le fichier où votre code natif réside. Si vous utilisez du code OpenCV natif, vous devez ajouter le nom de votre fichier cpp ici. Si vous ne possédez pas de partie native, vous devez ajouter la bibliothèque OpenCV au dossier libs de votre projet. (en cas d'initialisation statique). Veuillez vérifier this page pour plus de détails.

+0

A droite, j'utilise un opencv natif, et c'est le nom correct du fichier. Comme je l'ai dit, si je supprime ces deux lignes en haut, il compile et fonctionne bien (y compris en appelant les fichiers JNI) – Jameo

+0

Maintenant, je vois, donc vous pouvez exécuter le programme avec une liaison dynamique, mais pas avec statique .. Je pensais que vous ne pouvez pas relier et courir du tout. Pour une liaison statique, vous devez définir OPENCV_LIB_TYPE: = STATIC dans Android.mk. – rics

+0

J'ai joué avec l'ajout que, par lui-même, je reçois toujours la même erreur (c'est-à-dire, en l'ajoutant entre les inclusions en haut). Je l'ai aussi essayé avec les deux autres, à la fois avant et après, donc je ne pense pas que ce soit une chose d'ordre – Jameo