未定义 对 android::LPAPlayer::* 的引用

Undefined Reference to android::LPAPlayer::*

本文关键字:引用 LPAPlayer android 未定义      更新时间:2023-10-16

我在为基于 MSM7x27A/Snapdragon S1 平台的不受支持的设备编译 CyanogenMod 11(Android 4.4) 时遇到了很大的困难。当我尝试构建libstagefright时,我想出了一个未定义的引用错误,用于android::LPAPlayer::*中的函数,包括构造函数。我得到的错误是:

Copying: /home/dyngar-f/android/android/out/target/common/obj/JAVA_LIBRARIES/mms-common_intermediates/noproguard.classes.jar
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1282: error: undefined reference to 'android::LPAPlayer::LPAPlayer(android::sp<android::MediaPlayerBase::AudioSink> const&, bool&, android::AwesomePlayer*)'
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1306: error: undefined reference to 'android::LPAPlayer::mObjectsAlive'
frameworks/av/media/libstagefright/AwesomePlayer.cpp:1882: error: undefined reference to 'android::LPAPlayer::mObjectsAlive'
collect2: error: ld returned 1 exit statusbuild/core/shared_library.mk:81: recipe for target '/home/dyngar-f/android/android/out/target/product/schS738c/obj/SHARED_LIBRARIES/libstagefright_intermediates/LINKED/libstagefright.so' failed
make: *** [/home/dyngar-f/android/android/out/target/product/schS738c/obj/SHARED_LIBRARIES/libstagefright_intermediates/LINKED/libstagefright.so] Error 1make: *** Waiting for unfinished jobs....

搜索了高低,没有发现这个错误导致我解决这个问题,我自己也没有找到解决方案。以下是我从其他人那里找到的对此问题的引用:

来自CMartinBaughman
的要点在此页面上的XDA线程中提到,还有一个答案似乎不起作用。

谁能指导我解决这个问题?

错误来自链接器,该链接器无法找到对LPAPlayer的引用,这实际上是CyanogenMod源中的自定义。从最新的树来看,libstagefright Android.mk不包括所有平台的LPAPlayer.cpp

要解决您的问题,请尝试在第 114-117 行之间添加Android.mk以下文件

#New lines included
ifeq ($(call is-chipset-in-board-platform,msm7x27),true)
    LOCAL_SRC_FILES += LPAPlayer.cpp
    LOCAL_CFLAGS += -DLEGACY_LPA -DUSE_LPA_MODE
endif
ifeq ($(call is-chipset-in-board-platform,msm7x30),true)
   LOCAL_SRC_FILES += LPAPlayer.cpp
   LOCAL_CFLAGS += -DLEGACY_LPA -DUSE_LPA_MODE
endif

平台名称可能需要修改以适应实际名称(请参阅BoardConfig.mk)。