2013-07-12 70 views
0

我想用絲束extern庫構建跟蹤的對象與衝浪的算法,所以我用這個教程的android應用Using OpenCV Nonfree Module (SIFT, SURF) in Android NDK Projects如何包括許多共享庫是.so構建Android APK

的第一個庫是libobjtrack_opencv_jni.so(使用跟蹤)的2人是libopencv_java.so和libobjtrack_opencv_jni.so 我完成要得到這樣的結果:

Android.mk:

LOCAL_PATH:= $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := sift_prebuilt 
LOCAL_SRC_FILES := libnonfree.so 
include $(PREBUILT_SHARED_LIBRARY) 
include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_java_prebuilt 
LOCAL_SRC_FILES := libopencv_java.so 
include $(PREBUILT_SHARED_LIBRARY) 


include $(CLEAR_VARS) 
LOCAL_MODULE := objtrack_opencv_jni 
LOCAL_SRC_FILES := libobjtrack_opencv_jni.so 
include $(PREBUILT_SHARED_LIBRARY) 
include $(CLEAR_VARS) 
OPENCV_LIB_TYPE  := STATIC 
OPENCV_INSTALL_MODULES:=on 
OPENCV_CAMERA_MODULES:=off 
include C:/OpenCV-2.4.5-android-sdk/sdk/native/jni/OpenCV.mk 
LOCAL_C_INCLUDES:= C:/OpenCV-2.4.5-android-sdk/sdk/native/jni/include 
LOCAL_MODULE := test_sift12 
LOCAL_CFLAGS := -Werror -O3 -ffast-math 
LOCAL_LDLIBS += -llog -ldl 
LOCAL_SHARED_LIBRARIES := sift_prebuilt opencv_java_prebuilt objtrack_opencv_jni 
LOCAL_SRC_FILES := test_sift.cpp 
include $(BUILD_SHARED_LIBRARY) 

構建成功,我得到test_sift12.so,但是當我運行.apk時,它不工作。我認爲問題是使用PREBUILT_SHARED_LIBRARYandroid.mk文件中。 我需要你的幫助

回答

0

加載庫,你想在活動中使用那些庫。

像這樣

public class YourClassName extends Activity { 

..... 

//add the following code at the end of the class 


    static 
    { 
     System.loadlibrary("opencv_java"); 
     System.loadlibrary("objtrack_opencv_jni"); 
     System.loadlibrary("nonfree"); 
     System.loadlibrary("test_sift12"); 
    } 
} 

我建議你改變你以下名稱

LOCAL_MODULE := sift_prebuilt 

LOCAL_MODULE := nonfree 

LOCAL_MODULE := opencv_java_prebuilt 

LOCAL_MODULE := opencv_java 

切記不要忘了修改LOCAL_SHARED_LIBRARIES

名稱
相關問題