我在链接时得到了一些奇怪的未定义引用,用于Android::Mutex和Android::AudioTrack,这是我接手的一个项目使用的。
有人有什么想法吗?没有Android静态库可以包含,是吗?
SharedLibrary:**jni.so
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `__static_initialization_and_destruction_0':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:29: undefined reference to `android::Mutex::Mutex()'
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:29: undefined reference to `android::Mutex::~Mutex()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_mute':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:263: undefined reference to `android::AudioTrack::mute(bool)'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_resume':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:255: undefined reference to `android::AudioTrack::start()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_pause':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:247: undefined reference to `android::AudioTrack::pause()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_get_delay':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:237: undefined reference to `android::AudioTrack::latency() const'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_uninit':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:220: undefined reference to `android::AudioTrack::stop()'
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:228: undefined reference to `android::AudioTrack::~AudioTrack()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_start':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:197: undefined reference to `android::AudioTrack::initCheck() const'
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:198: undefined reference to `android::AudioTrack::start()'
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:201: undefined reference to `android::AudioTrack::setVolume(float, float)'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_start':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:207: undefined reference to `android::AudioTrack::~AudioTrack()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `Autolock':
/Android/source/frameworks/base/include/utils/threads.h:232: undefined reference to `android::Mutex::lock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_init':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:122: undefined reference to `android::AudioTrack::AudioTrack()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~Autolock':
/Android/source/frameworks/base/include/utils/threads.h:234: undefined reference to `android::Mutex::unlock()'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `android_init':
/Users/kevin/Desktop/player2/videoplayer/LibPlayer/amadec/audio_out/android_out.cpp:139: undefined reference to `android::AudioTrack::set(int, unsigned int, int, int, int, unsigned int, void (*)(int, void*, void*), void*, int, android::sp<android::IMemory> const&, bool, int)'
/Users/kevin/Desktop/player2/videoplayer/videoplayer/obj/local/armeabi-v7a/libamadec.a(android_out.o): In function `~sp':
/Android/source/frameworks/base/include/utils/RefBase.h:378: undefined reference to `android::RefBase::decStrong(void const*) const'
collect2: ld returned 1 exit status发布于 2012-08-23 20:50:00
这也困扰着我-但我最终解决了它与仿生的头部(bionic/libc/include),并-重要的部分- #define'ing HAVE_PTHREADS (即添加LOCAL_CFLAGS += HAVE_PTHREADS)。
发布于 2012-06-11 19:28:16
这些是一些奇怪的错误..。看起来,每次从android::Mutex或android::AudioTrack库中引用某些内容时,链接器都找不到这些函数。我所能说的是,由于这些库不是android标准库的一部分,所以请确保它们在构建路径中,否则祝您好运。
https://stackoverflow.com/questions/10984001
复制相似问题