Declaración implícita incompatible de la función incorporada Advertencia Uso de NDK con LAME

Estoy tratando de 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 se encuentra en

C:\workspace\ 

Y se llama 'LAME_Test'. Por la sección etiquetada Compilación con NDK en el tutorial, seguí adelante e hice un makefile 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 instalado 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 se encuentra 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] 

Estoy adjuntando un pequeño fragmento de las advertencias en la parte inferior de este post (porque la lista de advertencias es realmente grande y sólo puede agregar desorden – en lugar de agregar valor).

Estaba preguntando si hay una forma lisa para resolver estas advertencias y obtener una compilación agradable, limpia.

PS: añadiré que pude construir + ejecutar el proyecto de muestra en el enlace anterior (LAME4Android). Esto requirió la compilación del código nativo. Por lo tanto, parece que el proyecto, de hecho, construir bien a pesar de todas las advertencias . Inicialmente pensé que estaba roto debido a las advertencias. Sin embargo, realmente sería realmente grande si había alguna manera de fijar 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 funciones incorporadas Advertencias

 $ /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 un montón de búsqueda parece que la respuesta que estaba buscando se encontró aquí

Lame MP3 Encoder compilar para Android

La clave para mí era garantizar que la línea siguiente se agregó a mi archivo Android.mk

 LOCAL_CFLAGS = -DSTDC_HEADERS 

Como mencionó James Zhang.

Estoy adjuntando mi makefile completo debajo de este post por 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) 
  • Reproducción de un MP4 o MP3 desde un enlace dentro de un WebView de Android
  • Transmisión de audio con Android MediaPlayer
  • ExoPlayer y comandos start / pause / seekTo
  • Cómo convertir datos sin formato PCM en archivos mp3?
  • Android - Reproducción de mp3 desde byte
  • Configurar el tono de llamada personalizado de contacto, ¿cómo?
  • ¿Cómo diseñar interacción servicio-actividad para un simple reproductor de mp3?
  • Cómo codificar un WAV a un mp3 en un dispositivo Android
  • Lame MP3 Encoder compilar para Android
  • Reproducir sonidos mp3 desde la tarjeta SD
  • Android: grabar sonido en formato mp3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.