android makefile jni mp3 lame

android - Declaración implícita incompatible de advertencia de función incorporada usando NDK con LAME



makefile jni (1)

Intento seguir el tutorial ubicado en la siguiente ubicación

http://developer.samsung.com/android/technical-docs/Porting-and-using-LAME-MP3-on-Android-with-JNI

La esencia de esto es que permite usar el codificador LAME MP3 con JNI.

Seguí cada uno de los pasos mencionados en el tutorial. Mi proyecto está ubicado en

C:/workspace/

y se llama ''LAME_Test''. En la sección titulada Compilación con NDK en el tutorial, continué e hice un archivo llamado ''Android.mk'' como se adjunta debajo de esta publicación.

Estoy ejecutando Windows 7 en una máquina de 64 bits. Tengo Cygwin y NDK instalados y he probado que mi configuración funciona en otro proyecto en el que estoy trabajando. Sin embargo, cuando voy a

/cygdrive/c/workspace/LAME_Test/jni

en Cygwin y emita el siguiente comando

/cygdrive/c/Android/android-ndk-r8b/ndk-build

dado que el NDK está ubicado en

C:/Android/android-ndk-r8b

la compilación escupe un montón de advertencias como estas

warning: incompatible implicit declaration of built-in function ''memset'' [enabled by default]

Adjuntaré un pequeño fragmento de las advertencias en la parte inferior de esta publicación (porque la lista de advertencias es realmente grande y puede agregar desorden, en lugar de agregar valor).

Me preguntaba si hay una forma elegante de resolver estas advertencias y obtener una compilación agradable y limpia.

PD: Añadiré que pude construir + ejecutar el proyecto de muestra en el enlace de arriba (LAME4Android). Esto requirió la compilación del código nativo. Entonces, parece que el proyecto, de hecho, funciona bien a pesar de todas las advertencias . Inicialmente pensé que estaba roto debido a las advertencias. Sin embargo, sería realmente genial si hubiera alguna manera de arreglar las advertencias.

Contenido del archivo Android.mk

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libmp3lame LOCAL_SRC_FILES := / ./libmp3lame/bitstream.c / ./libmp3lame/encoder.c / ./libmp3lame/fft.c / ./libmp3lame/gain_analysis.c / ./libmp3lame/id3tag.c / ./libmp3lame/lame.c / ./libmp3lame/mpglib_interface.c / ./libmp3lame/newmdct.c / ./libmp3lame/presets.c / ./libmp3lame/psymodel.c / ./libmp3lame/quantize.c / ./libmp3lame/quantize_pvt.c / ./libmp3lame/reservoir.c / ./libmp3lame/set_get.c / ./libmp3lame/tables.c / ./libmp3lame/takehiro.c / ./libmp3lame/util.c / ./libmp3lame/vbrquantize.c / ./libmp3lame/VbrTag.c / ./libmp3lame/version.c LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)

Registro de declaraciones implícitas incompatibles de advertencias de funciones incorporadas

$ /cygdrive/c/Android/android-ndk-r8b/ndk-build Cygwin : Generating dependency file converter script Compile thumb : mp3lame <= bitstream.c Compile thumb : mp3lame <= encoder.c C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c: In function ''lame_encode_frame_init'': C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c:202:9: warning: incompatible implicit declaration of built-in function ''memset'' [enabled by default] C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c: In function ''lame_encode_mp3_frame'': C:/workspace/LAME_Test/jni/./libmp3lame/encoder.c:471:17: warning: incompatible implicit declaration of built-in function ''bcopy'' [enabled by default] Compile thumb : mp3lame <= fft.c Compile thumb : mp3lame <= gain_analysis.c and so on...


Después de buscar mucho, parece que la respuesta que estaba buscando se encontró aquí.

Lame MP3 Encoder compila para Android

La clave para mí fue asegurarme de que se agregara la siguiente línea a mi archivo Android.mk

LOCAL_CFLAGS = -DSTDC_HEADERS

como lo menciona James Zhang.

Adjunto mi archivo completo debajo de esta publicación, así que lo que estoy diciendo es perfectamente claro.

Contenido del archivo Android.mk actualizado

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libmp3lame LOCAL_SRC_FILES := / ./libmp3lame/bitstream.c / ./libmp3lame/encoder.c / ./libmp3lame/fft.c / ./libmp3lame/gain_analysis.c / ./libmp3lame/id3tag.c / ./libmp3lame/lame.c / ./libmp3lame/mpglib_interface.c / ./libmp3lame/newmdct.c / ./libmp3lame/presets.c / ./libmp3lame/psymodel.c / ./libmp3lame/quantize.c / ./libmp3lame/quantize_pvt.c / ./libmp3lame/reservoir.c / ./libmp3lame/set_get.c / ./libmp3lame/tables.c / ./libmp3lame/takehiro.c / ./libmp3lame/util.c / ./libmp3lame/vbrquantize.c / ./libmp3lame/VbrTag.c / ./libmp3lame/version.c LOCAL_LDLIBS := -llog LOCAL_CFLAGS = -DSTDC_HEADERS include $(BUILD_SHARED_LIBRARY)