Como enlazar cualquier librería en la aplicación ndk.
Desdeeste tutorial.
veo que tengo una biblioteca estática pre-construida llamadastackoverflow.a
y tienestackoverflow.h
Ahora quiero usar la función de esa biblioteca estática en
ndk_demo.c
// ese tutorial tiene este archivo
por eso dentrondk_demo.c
Yo he añadido
<code>#include 'stackoverflow.h' </code>
Editar
<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>
AhoraAplicación.mk
<code>APP_PROJECT_PATH := $(call my-dir)/project APP_MODULES := ndk_demo stackover </code>
Ahorajni / 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>
ahorajni / 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>
Ahora desdeandroid-ndk-r7c
directorio ejecuto
<code>make APP=ndk_demo </code>
me muestra un error como
<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>
¿Por qué esto está sucediendo?
si yo comento
<code>#include $(call all-subdir-makefiles) </code>
esto dejni/Android.mk
entonces muestra el siguiente error
<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>