gpt4 book ai didi

android - 无法加载库 : reloc_library[1306]: 249 cannot locate 'atof' . .. 在 Android 中加载 avformat.so 时

转载 作者:行者123 更新时间:2023-12-04 23:34:04 27 4
gpt4 key购买 nike

我正在使用 Android Studio 2.2 并尝试链接 ffmpeg 库以在 Android 4.1.2 设备上运行。加载 avformat 库时,出现错误
"cannot load library: reloc_library[1306]: 249 cannot locate 'atof'..."
下面的链接指出,如果使用 SDK 版本 21 及更高版本构建的应用程序在具有较旧 Android 版本(SDK 版本 < 19)的设备上运行时会出现此问题。

Cannot load library: reloc_library[1285]: cannot locate 'rand'

我在 build.gradle 中将 targetSdkVersion 更改为 19,并使用“android-16”目标构建了 ffmpeg 库,但仍然出现错误。

我想知道是否有人有类似的问题并找到了使其工作的方法。谢谢。

最佳答案

我想我让它工作或至少解决我的问题。问题是由于两件事:

1) ffmpeg 库是用“android-23”构建的。

2) Android Studio 没有将 ffmpeg 库打包到 APK 中。

这就是我要让它工作的东西。

  • 使用“android-19”(或其他链接建议的更低)构建 ffmpeg 库。顺便说一句,targetSdkVersion 不必小于 21。对我来说,它仍然适用于 23。
  • 为我正在使用的这些库按特定顺序调用 System.loadlibrary("")。

    System.loadLibrary("avutil-55");

    System.loadLibrary("swscale-4");

    System.loadLibrary("avcodec-57");

    System.loadLibrary("avfilter-6");

    System.loadLibrary("avformat-57");

    System.loadLibrary("avdevice-57");

  • 让我失望的是前四行执行得很好。该错误出现在第五次通话中。我不知道为什么。

    无论如何,这就是我在 ffmpeg 库的 CMakeLists.txt 中所拥有的。
        # Sub-libraries ffmpeg
    add_library( avcodec-57 SHARED IMPORTED )
    add_library( avdevice-57 SHARED IMPORTED )
    add_library( avfilter-6 SHARED IMPORTED )
    add_library( avformat-57 SHARED IMPORTED )
    add_library( avutil-55 SHARED IMPORTED )
    add_library( swscale-4 SHARED IMPORTED )

    set_target_properties( avcodec-57
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libavcodec-57.so
    )
    set_target_properties( avdevice-57
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libavdevice-57.so
    )
    set_target_properties( avfilter-6
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libavfilter-6.so
    )
    set_target_properties( avformat-57
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libavformat-57.so
    )
    set_target_properties( avutil-55
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libavutil-55.so
    )
    set_target_properties( swscale-4
    PROPERTIES IMPORTED_LOCATION
    ../../../../libs/${ANDROID_ABI}/lib/libswscale-4.so
    )

    # Specifies a path to native header files.
    include_directories(
    libs/${ANDROID_ABI}/include
    )

    target_link_libraries( # Specifies the target library.
    native-libcore

    # Links the target library to the log library
    # included in the NDK.
    avcodec-57 avdevice-57 avfilter-6 avformat-57 avutil-55 swscale-4
    ${log-lib}
    )
  • 最后,由于 Android Studio 2.2 没有打包库,我手动将库复制到项目的 ..\build\intermediates\cmake\debug\obj\文件夹中。在刷新 CMakeLists.txt(进行项目同步)之前,此文件夹不存在。运行应用程序时,库将被复制到 apk。
  • 关于android - 无法加载库 : reloc_library[1306]: 249 cannot locate 'atof' . .. 在 Android 中加载 avformat.so 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392224/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com