无法加载库:reloc_库[1306]:249找不到';atof';。。。在Android中加载avformat.so时

无法加载库:reloc_库[1306]:249找不到';atof';。。。在Android中加载avformat.so时,android,ffmpeg,Android,Ffmpeg,我正在使用Android Studio 2.2,并尝试链接ffmpeg库以在Android 4.1.2设备上运行。加载avformat库时,我得到了错误 “无法加载库:reloc_库[1306]:249找不到'atof'…” 下面的链接指出,如果应用程序是使用SDK版本21及更高版本构建的,那么在使用旧Android版本(SDK版本

我正在使用Android Studio 2.2,并尝试链接ffmpeg库以在Android 4.1.2设备上运行。加载avformat库时,我得到了错误

“无法加载库:reloc_库[1306]:249找不到'atof'…”

下面的链接指出,如果应用程序是使用SDK版本21及更高版本构建的,那么在使用旧Android版本(SDK版本<19)的设备上运行时会出现此问题

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


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

我想我已经开始工作了,或者至少解决了我的问题。问题的原因有两个:

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

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

这是我能让它工作的东西

  • 使用“android-19”(或其他链接建议的更低版本)构建ffmpeg库。顺便说一下,targetSdkVersion不必小于21。对我来说,它仍然适用于23

  • 按我正在使用的这些库的特定顺序调用System.loadlibrary(“”)

    系统加载库(“avutil-55”)

    系统加载库(“swscale-4”)

    系统加载库(“avcodec-57”)

    系统加载库(“avfilter-6”)

    系统加载库(“avformat-57”)

    系统加载库(“avdevice-57”)

让我不高兴的是,前四行执行得很好。这个错误在第五次通话时就出现了。我不知道为什么

无论如何,这就是我在CMakeLists.txt中为ffmpeg库提供的内容

    # 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\mediates\cmake\debug\obj\文件夹中。在刷新CMakeLists.txt(执行项目同步)之前,此文件夹不存在。应用程序运行时,库将复制到apk

我让Android Studio 2.2打包了预构建库。在jniLibs中,它应该只包含文件夹,并且只有库文件应该在其中。在我有include和lib文件夹之前。构建将库文件复制到构建文件夹中的jni文件夹中,但没有任何文件。