spacepaste

  1.  
  2. Hi and thanks for practically the only guide online for how to do this!!
  3. I am having trouble with what I believe is a linker error. Though ndk-builder gives no errors for building libnonfree.so, I noticed with ls-la that the size of my file is much smaller than the one you provided pre-compiled (5088 bytes vs 460144 bytes for yours).
  4. libnonfree.so ndk-build output:
  5. nathan@nathan-lenovo:~/Downloads/nonfree_opencv_android/jni$ ../../android-ndk-r10c/ndk-build
  6. [armeabi] Prebuilt : libopencv_java.so <= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/../libs/armeabi/
  7. [armeabi] SharedLibrary : libnonfree.so
  8. [armeabi] Install : libnonfree.so => libs/armeabi/libnonfree.so
  9. Application.mk:
  10. APP_ABI := armeabi
  11. #APP_ABI += armeabi-v7a # you can do either armeabi or armeabi-v7a, steps are the same.
  12. #APP_ABI += x86
  13. APP_STL := gnustl_static
  14. APP_CPPFLAGS := -frtti -fexceptions
  15. APP_PLATFORM := android-19
  16. Android.mk:
  17. LOCAL_PATH:= $(call my-dir)
  18. include $(CLEAR_VARS)
  19. OPENCV_INSTALL_MODULES:=on
  20. OPENCV_CAMERA_MODULES:=off
  21. include /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk
  22. LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include
  23. LOCAL_MODULE := nonfree
  24. LOCAL_CFLAGS := -Werror -O3 -ffast-math
  25. LOCAL_LDLIBS += -llog
  26. # for 2.4.8, delete the line precomp.cpp \
  27. LOCAL_SRC_FILES := nonfree_init.cpp \
  28. precomp.cpp \
  29. sift.cpp \
  30. surf.cpp
  31. include $(BUILD_SHARED_LIBRARY)
  32. This is the output for the demo C++ app:
  33. nathan@nathan-lenovo:~/Downloads/sift_demo/sift_opencv_android$ ../../android-ndk-r10c/ndk-build
  34. [armeabi] Prebuilt : libopencv_java.so <= jni/
  35. [armeabi] Install : libopencv_java.so => libs/armeabi/libopencv_java.so
  36. [armeabi] Prebuilt : libnonfree.so <= jni/
  37. [armeabi] Install : libnonfree.so => libs/armeabi/libnonfree.so
  38. [armeabi] Compile++ thumb: test_sift <= test_sift.cpp
  39. [armeabi] Executable : test_sift
  40. /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'vtable for cv::SIFT'
  41. /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function .LTHUNK7:/home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/opencv2/nonfree/features2d.hpp:58: error: undefined reference to 'VTT for cv::SIFT'
  42. /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:39: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
  43. /home/nathan/Downloads/android-ndk-r10c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/test_sift/test_sift.o: in function main:jni/test_sift.cpp:47: error: undefined reference to 'cv::SIFT::SIFT(int, int, double, double, double)'
  44. collect2: ld returned 1 exit status
  45. make: *** [obj/local/armeabi/test_sift] Error 1
  46. Application.mk:
  47. APP_ABI := armeabi
  48. #APP_ABI += armeabi-v7a
  49. APP_STL := gnustl_static
  50. APP_CPPFLAGS := -frtti -fexceptions
  51. APP_PLATFORM := android-19
  52. Android.mk:
  53. LOCAL_PATH:= $(call my-dir)
  54. include $(CLEAR_VARS)
  55. LOCAL_MODULE := sift_prebuilt
  56. LOCAL_SRC_FILES := libnonfree.so
  57. include $(PREBUILT_SHARED_LIBRARY)
  58. include $(CLEAR_VARS)
  59. LOCAL_MODULE := opencv_java_prebuilt
  60. LOCAL_SRC_FILES := libopencv_java.so
  61. include $(PREBUILT_SHARED_LIBRARY)
  62. include $(CLEAR_VARS)
  63. LOCAL_C_INCLUDES:= /home/nathan/Downloads/OpenCV-2.4.9-android-sdk/sdk/native/jni/include/
  64. LOCAL_MODULE := test_sift
  65. LOCAL_CFLAGS := -Werror -O3 -ffast-math
  66. LOCAL_LDLIBS += -llog -ldl
  67. LOCAL_SHARED_LIBRARIES := sift_prebuilt opencv_java_prebuilt
  68. LOCAL_SRC_FILES := test_sift.cpp
  69. include $(BUILD_EXECUTABLE)
  70.