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
我希望你现在能够构建它。
更新:
拉取请求已合并,因此只需拉取并重建您的项目。
当我从 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
我希望你现在能够构建它。
更新: 拉取请求已合并,因此只需拉取并重建您的项目。