Jak połączyć dowolną bibliotekę w aplikacji ndk
zobacz, że mam jedną wstępnie zbudowaną statyczną bibliotekę o nazwie asstackoverflow.a
i mastackoverflow.h
teraz chcę użyć funkcji tej statycznej biblioteki w
ndk_demo.c
// ten samouczek ma ten plik
za to w środkundk_demo.c
dodałem
<code>#include 'stackoverflow.h' </code>
Edytować
<code>inside `android-ndk-r7c` | apps | ndk_demo | ----------------- | | project Application.mk | -------------------- | | all other | folder jni | ------------------------------------------------------------------- | | | | | ndk_demo.c stackoverflow.h lib com_marakana Android.mk | _NativeLib.h | -------------------- | | Android.mk libstackoverflow.a </code>
TerazAplikacja.mk
<code>APP_PROJECT_PATH := $(call my-dir)/project APP_MODULES := ndk_demo stackover </code>
Terazjni / Android.mk
<code>include $(call all-subdir-makefiles) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ndk_demo LOCAL_SRC_FILES := ndk_demo.c LOCAL_STATIC_LIBRARIES := stackover include $(BUILD_SHARED_LIBRARY) </code>
terazjni / lib / Android.mk
<code> LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := stackover LOCAL_SRC_FILES := libstackoverflow.a include $(PREBUILT_STATIC_LIBRARY) LOCAL_PATH := $(call my-dir) </code>
Teraz odandroid-ndk-r7c
katalog, który uruchamiam
<code>make APP=ndk_demo </code>
pokazuje mi błąd
<code>Android NDK: Building for application 'ndk_demo' make: *** No rule to make target `build/core/ndk_demo.c', needed by `out/apps/ndk_demo/armeabi/objs/ndk_demo/ndk_demo.o'. Stop. </code>
dlaczego to się nie dzieje?
jeśli komentuję
<code>#include $(call all-subdir-makefiles) </code>
to odjni/Android.mk
to pokazuje następujący błąd
<code>Android NDK: Building for application 'ndk_demo' Compile thumb : ndk_demo <= ndk_demo.c SharedLibrary : libndk_demo.so ./out/apps/ndk_demo/armeabi/objs/ndk_demo/ndk_demo.o: In function `Java_com_marakana_NativeLib_hello': /home/jeegar/android-ndk-r7c/apps/ndk_demo/project/jni/ndk_demo.c:10: undefined reference to `stackoverflowInit' collect2: ld returned 1 exit status make: *** [out/apps/ndk_demo/armeabi/libndk_demo.so] Error 1 </code>