एंड्रॉइड एनडीके के साथ डीएलआईबी और ओपनसीवी संकलित करें

bendaf 07/28/2017. 1 answers, 101 views
android android build android-ndk android-ndk dlib android-studio-2.3

मैं एंड्रॉइड डेवलपर हूं, लेकिन मैं एंड्रॉइड एनडीके के लिए नया हूं, कृपया मदद करें, या मुझे बताएं कि आपको और किस चीज की आवश्यकता होगी / आप इस प्रकार की समस्या को हल करने का प्रयास कैसे करेंगे।

मैंने एंड्रॉइड उदाहरण के लिए इस डीएलआईबी का उपयोग किया और एंड्रॉइड लाइब्रेरी के लिए आधिकारिक ओपनसीवी और मैं एक आवेदन में दो को एकीकृत करना चाहता हूं। जब मैं प्रोजेक्ट बनाने की कोशिश करता हूं तो मुझे निम्न त्रुटि मिलती है:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':openCVSamplefacedetection:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process /home/feli/Android/Sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/Android.mk NDK_APPLICATION_MK=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/Application.mk APP_ABI=mips64 NDK_ALL_ABIS=mips64 NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/lib /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj/local/mips64/libdetection_based_tracker.so}
  [mips64] Compile++      : detection_based_tracker <= DetectionBasedTracker_jni.cpp
  [mips64] Prebuilt       : libopencv_java3.so <= /home/feli/Android/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/mips64/
  [mips64] SharedLibrary  : libdetection_based_tracker.so
  /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj/local/mips64/objs-debug/detection_based_tracker/DetectionBasedTracker_jni.o: In function `dlib_check_consistent_assert_usage':
  /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/dlib/dlib/threads/threads_kernel_shared.h:44: undefined reference to `USER_ERROR__missing_dlib_all_source_cpp_file__OR__inconsistent_use_of_DEBUG_or_ENABLE_ASSERTS_preprocessor_directives_'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  make: *** [/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj/local/mips64/libdetection_based_tracker.so] Error 1


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

मेरा पहला अनुमान था कि मैंने अपने Android.mk में source.cpp को शामिल नहीं किया है लेकिन इसे src फ़ाइलों में स्थानांतरित करने से porblem को हल नहीं किया गया है। यहां मेरा एंड्रॉइड.एमके है:

LOCAL_PATH := $(call my-dir)

## Build dlib to static library
include $(CLEAR_VARS)
LOCAL_MODULE := dlib
LOCAL_C_INCLUDES := $(LOCAL_PATH)/dlib

LOCAL_SRC_FILES += \
                $(LOCAL_PATH)/dlib/dlib/all/source.cpp \
                $(LOCAL_PATH)/dlib//dlib/threads/threads_kernel_shared.cpp \
                $(LOCAL_PATH)/dlib/dlib/entropy_decoder/entropy_decoder_kernel_2.cpp \
                $(LOCAL_PATH)/dlib/dlib/base64/base64_kernel_1.cpp \
                $(LOCAL_PATH)/dlib/dlib/threads/threads_kernel_1.cpp \
                $(LOCAL_PATH)/dlib/dlib/threads/threads_kernel_2.cpp

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
include $(BUILD_STATIC_LIBRARY)

# Build opencv
include $(CLEAR_VARS)
OPENCVROOT := ~/Android/openCV/OpenCV-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE := SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk

LOCAL_MODULE     := detection_based_tracker
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp

LOCAL_LDLIBS     += -lm -llog -ldl -lz -ljnigraphics
LOCAL_CPPFLAGS += -fexceptions -frtti -std=c++11

# LOCAL_STATIC_LIBRARIES += dlib

include $(BUILD_SHARED_LIBRARY) 

शायद NDK_PROJECT_PATH=null समस्या है? क्यों दो पुस्तकालय अलग से निर्माण कर रहे हैं? या समस्या क्या हो सकती है? मैंने एंड्रॉइड.एमके को बहुत संशोधित करने की कोशिश की, लेकिन यह काम कर रहा है मेरे लिए एक रहस्य है। कोई मदद या राय उपयोगी होगी।

EDIT:

जब मैं LOCAL_STATIC_LIBRARIES += dlib पंक्ति पर टिप्पणी करता LOCAL_STATIC_LIBRARIES += dlib , तो मुझे निम्न अपवाद मिला:

Build command failed.
  Error while executing process /home/feli/Android/Sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/Android.mk NDK_APPLICATION_MK=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/Application.mk APP_ABI=mips64 NDK_ALL_ABIS=mips64 NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/lib /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj/local/mips64/libdetection_based_tracker.so}
  [mips64] Compile++      : detection_based_tracker <= DetectionBasedTracker_jni.cpp
  [mips64] Compile++      : dlib <= source.cpp
  In file included from /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/dlib/dlib/all/source.cpp:76:
  In file included from /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/dlib/dlib/all/../gui_widgets/fonts.cpp:14:
  /home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/dlib/dlib/all/../gui_widgets/nativefont.h:27:10: fatal error: 'X11/Xlib.h' file not found
  #include            ^~~~~~~~~~~~
  1 error generated.
  make: *** [/home/feli/Development/android/test/face-detection/openCVSamplefacedetection/build/intermediates/ndkBuild/debug/obj/local/mips64/objs-debug/dlib//home/feli/Development/android/test/face-detection/openCVSamplefacedetection/src/main/jni/dlib/dlib/all/source.o] Error 1 
5 Comments
Alex Cohn 07/28/2017
क्या आपको वास्तव में एमआईपीएस निर्माण की ज़रूरत है? यदि आप एआरएम उपकरणों पर अपना ऐप चलाने का इरादा रखते हैं, तो अपनी build.gradle स्क्रिप्ट में abiFilters= "armeabi_v7a" जोड़ें।
bendaf 07/30/2017
मैं अबी arm64-v8a पर चल रहा हूं, लेकिन मैं देशी सी ++ कोड को भी संशोधित कर रहा हूं, इसलिए मुझे लगता है कि मुझे इसे भी बनाना होगा।
Alex Cohn 07/30/2017
आपको LOCAL_STATIC_LIBRARIES += dlib टिप्पणी नहीं करनी चाहिए
bendaf 07/31/2017
मैंने अपना प्रश्न संपादित कर लिया है, अगर आपके पास समय है तो कृपया इसे जांचें
1 Alex Cohn 07/31/2017
नहीं, आपको NDK_PROJECT_PATH बारे में चिंता नहीं करनी चाहिए, इस प्रकार एंड्रॉइड स्टूडियो NDK_PROJECT_PATH ndk-build माध्यम से मूल निर्माण को कॉन्फ़िगर करता है। लेकिन dlib को dlib आसपास cmake , इसलिए वहां इस्तेमाल की जाने वाली बिल्ड सेटिंग्स को पुन: उत्पन्न करना चाहिए।

1 Answers


Alex Cohn 07/31/2017.

dlib का उपयोग करता है, और यह एक मामूली सेटअप नहीं है। इस लाइब्रेरी के लिए ndk-build स्क्रिप्ट तैयार करने में एक पेशेवर पेशेवर के लिए लंबा समय लग सकता है।

मेरा सुझाव है कि आप cmake ndk-build बजाय, अपनी मूल लाइब्रेरी को cmake साथ cmake । आप एक मूल पुस्तकालय का उदाहरण पा सकते हैं जो गिटहब पर ओपनसीवी का उपयोग करता है

साथ ही, मेरा सुझाव है कि आप केवल एक सबसे प्रासंगिक एबीआई पर सेट किए गए abiFilters शुरू करें, और केवल तभी जब आप देखते हैं कि सब कुछ आपके लिए काम करता है, तो आप अन्य एबीआई के लिए अपनी परियोजना बना सकते हैं। याद रखें कि सभी एबीआई को पोर्ट करने वाली कुछ पुस्तकालयों के लिए मुश्किल हो सकती है। और यदि आपके पास कुछ एबीआई के लिए कम से कम एक संक्षिप्त सैनिटी चेक करने के लिए कोई मंच नहीं है, तो इसके लिए निर्माण में कोई समझ नहीं है।

1 comments
bendaf 07/31/2017
धन्यवाद, मैं उसे कोशिश करूंगा!

HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
4 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
5 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
6 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
7 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
8 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
9 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
10 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
11 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
12 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
13 Little Mix

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
14 Haley Reinhart

Something Strange flac

Haley Reinhart. 2018.
15 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
16 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
17 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
18 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
19 KSHMR

Magic flac

KSHMR. 2018.
20 Call Me Karizma

God Damnit flac

Call Me Karizma. 2018. Writer: Illenium;Call Me Karizma.

Related questions

Hot questions

Language

Popular Tags