Неопределенная ссылка на функцию в статической библиотеке с NDK
Так что я'Я пытаюсь использовать libopus в моем родном коде для приложения Android. Мой файл Android.mk выглядит так:
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)
И мой код в opusUtilsNative.c выглядит так:
#include "opusUtilsNative.h"
#include
#include
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;
}
И когда я пытаюсь его построить, он работает нормальнотолько если я удалю строку, которая использует "opus_decoder_create» функция, Иначе я получу это:
error: undefined reference to 'opus_decoder_create'
Я вижу, что opus_decoder_create четко определен в opus.h, который явно включен, поскольку, если я исключу эту строку, я 'Вы получите ошибку, касающуюся объявлений opus_int16 и OpusDecoder. Почему некоторые определения включены, а некоторые нет?т?
Любая помощь будет оценена.