Android NDK 和 Bento4 - 对 'AP4_Ac4SampleDescription::_class_AP4_Ac4SampleDescription' 的未定义引用

Android NDK and Bento4 - Undefined reference to 'AP4_Ac4SampleDescription::_class_AP4_Ac4SampleDescription'

当我从 Android Studio 构建 Bento4 库时,我得到一个未定义的引用 'AP4_Ac4SampleDescription::_class_AP4_Ac4SampleDescription' 错误。

总的来说,不同平台的 Bento4 大约有 5 个 cmake 命令。这是 Linux 和 Android 的 2 个:

基本Linux: cmake -DCMAKE_BUILT_TYPE=Release ..

Android NDK: cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=$ABI -DANDROID_NATIVE_API_LEVEL=$MINSDKVERSION ..

使用基本 Linux 版本构建良好。

Android 版本无法正常工作的原因可能是什么?请注意:我尝试了几个不同版本的 Android NDK。我在版本 16 和 17 中遇到一个错误,在版本 18 到 21 中遇到另一个错误。

这是Bento4端的一个bug。您需要将遗漏的内容添加到 Bento4/Source/C++/Core/Ap4SampleDescription.cpp:

AP4_DEFINE_DYNAMIC_CAST_ANCHOR(AP4_Ac3SampleDescription)
AP4_DEFINE_DYNAMIC_CAST_ANCHOR(AP4_Eac3SampleDescription)
AP4_DEFINE_DYNAMIC_CAST_ANCHOR(AP4_Ac4SampleDescription)

我还为 Bento4 存储库创建了相应的拉取请求:https://github.com/axiomatic-systems/Bento4/pull/654

我希望你现在能够构建它。

更新: 拉取请求已合并,因此只需拉取并重建您的项目。