我正在嘗試將MP3讀寫功能添加到我的Android應用程序。我使用lame4android應用程序作爲起點。編碼一個文件適用於我,但我遇到了解碼功能的問題 - 我收到了對解碼功能的未定義引用。undefined lame解碼函數
下面是我摘錄wrapper.c:
#include "libmp3lame/lame.h"
#include "jni.h"
lame_t lame;
jint Java_com_intonia_dandy_WavStream_initEncoder(JNIEnv *env,
jobject jobj,
jint in_num_channels,
jint in_samplerate)
{
lame = lame_init();
...
return lame_init_params(lame);
}
hip_t hip;
jint Java_com_intonia_dandy_WavStream_initDecoder(JNIEnv *env, jobject jobj)
{
hip = hip_decode_init();
return hip != 0;
}
而且這裏距離lame.h聲明:
lame_global_flags * CDECL lame_init(void);
typedef hip_global_flags *hip_t;
hip_t CDECL hip_decode_init(void);
我收到一條錯誤消息:
C:/ACode/dandy/src/main/jni/./wrapper.c:62: undefined reference to `hip_decode_init`
我也收到未定義的參考hip_decode
和和hip_decode_exit
。但是lame_init
,lame_init_params
,lame_encode_buffer
和lame_encode_flush
不會產生任何錯誤。我使用命令行運行ndk-build時會出現這些錯誤,而當我讓Android Studio管理編譯時,我會得到相同的錯誤。
lame_*
功能與hip_decode_*
功能有什麼不同?我應該使用已棄用的lame_decode_*
嗎?
編輯:我正在看ndk-build命令的輸出。 .c文件在編譯時在控制檯上列出。 hip_decode_init
定義在jni/libmp3lame/mpglib_interface.c
中,但mpglib_interface
未被編譯,即使它在jni/Android.mk
中列出。爲什麼不???