Referencia indefinida para funcionar en una biblioteca estática con NDK

Así que estoy intentando usar libopus en mi código nativo para una aplicación de Android. Mi archivo de Android.mk se ve así:

PLATFORM_PREFIX := /opt/android-ext/
LOCAL_PATH := $(PLATFORM_PREFIX)/lib

include $(CLEAR_VARS)

LOCAL_MODULE := libopus
LOCAL_SRC_FILES := libopus.a

include $(PREBUILT_STATIC_LIBRARY)

# I have to redeclare LOCAL_PATH because the library is in /opt/android-ext/
# and my project is somewhere else. Not very elegant.

LOCAL_PATH := /home/sergio/workspace/Project/jni

include $(CLEAR_VARS)

LOCAL_MODULE := opusUtilsNative
LOCAL_SRC_FILES := opusUtilsNative.c
LOCAL_C_INCLUDES += $(PLATFORM_PREFIX)/include
LOCAL_STATIC_LIBRARIES := android_native_app_glue libopus

include $(BUILD_SHARED_LIBRARY)

Y mi código en opusUtilsNative.c se ve así:

#include "opusUtilsNative.h"
#include <opus/opus.h>
#include <opus/opus_types.h>

JNIEXPORT jbyteArray JNICALL Java_Project_OpusUtils_encode
  (JNIEnv * je, jclass jc, jbyteArray data){

    int rc;
    opus_int16 * testOutBuffer;
    unsigned char* opusBuffer;

    OpusDecoder *dec;

    dec = opus_decoder_create(48000, 2, &rc);
    return data;
}

Y cuando intento construirlo, funciona bien.solo si elimino la línea que usa la función "opus_decoder_create". De lo contrario obtendré esto:

error: undefined reference to 'opus_decoder_create'

Puedo ver que opus_decoder_create está claramente definido en opus.h, que se incluye claramente ya que si excluyo esa línea, obtendré un error con respecto a las declaraciones opus_int16 y OpusDecoder. ¿Cómo es que algunas definiciones se incluyen y otras no?

Cualquier ayuda será apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta