2011-08-29 6 views
5

Actualmente estoy escribiendo una aplicación de clasificación de género como mi proyecto de último año en Ingeniería Informática. Inicialmente escribí el código de extracción de características (implementando FFTW) en C y ahora necesito implementarlo en Android a través del NDK.Vinculación de FFTW en una aplicación NDK de Android

Este es mi primer proyecto NDK, así que todavía estoy aprendiendo las cosas, pero he compilado la biblioteca FFTW3 para Android de acuerdo con this guide. No hice el último paso porque no creía que fuera lo correcto para lo que necesito.

Mi pregunta es, ¿cómo puedo, después del paso de compilación, usar la biblioteca en la aplicación NDK principal que lo invoca? ¿Hago todo normalmente en Application.mk solo con LOCAL_STATIC_LIBRARIES establecido en el libfftw3.a que acabo de compilar? Y entonces no necesito tener ningún marcador de enlazador -fftw3 como normalmente lo haría, ¿verdad?

Respuesta

4

Puede utilizar la biblioteca de precompilación FFTW (no importa cómo lo haya compilado).

O puede compilar FFTW en Android.mk makefile con todo el proyecto.

Android.mk contenido será:

# Prebuilt FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
include $(PREBUILT_STATIC_LIBRARY) 

# or 

# Build FFTW library 
include $(CLEAR_VARS) 
LOCAL_MODULE := fftw 
# TODO put your static libs build flags 
include path_to_fftw_sources/$(LOCAL_MODULE).mk 
include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := YourProject 
# TODO put your shared lib build flags 
include path_to_your_project/$(LOCAL_MODULE).mk 
LOCAL_STATIC_LIBRARIES += fftw 
include $(BUILD_SHARED_LIBRARY) 

He escrito path_to_fftw_sources/$(LOCAL_MODULE).mk para la construcción de la biblioteca estática y fftw path_to_your_project/$(LOCAL_MODULE).mk para la construcción de su biblioteca compartida. A menudo es mejor poner LOCAL_SRC_FILES y LOCAL_C_INCLUDES en el archivo separado .mk.

Puede leer más sobre el archivo Android.mk en el documento docs/ANDROID-MK.html en su distribución NDK.