【发布时间】:2013-01-25 12:12:49
【问题描述】:
我已经为 Android 构建了 FFmpeg,并希望在这样的应用程序中使用它:
System.loadLibrary("avutil");
System.loadLibrary("swscale");
System.loadLibrary("avcodec");
System.loadLibrary("avformat");
构建输出为lib*.so、lib*.so.MAJOR 和lib*.so.MAJOR.MINOR.OTHER 文件。共享对象内部是lib*.so.MAJOR 之类的引用,例如libswscale.so.2 需要libavutil.so.52。
现在,如果我将*.so 文件放在项目的libs 文件夹中(更确切地说是libs/armeabi-v7a),我当然会得到
01-25 12:06:40.270:E/AndroidRuntime(2905):java.lang.UnsatisfiedLinkError:无法加载库:link_image[1936]:107 无法为“libswscale”加载所需的库“libavutil.so.52” .so' (load_library[1091]: 找不到库 'libavutil.so.52')
但是,如果我将 *.so.MAJOR 文件放在 libs 文件夹中以解决链接异常,则从 Eclipse 运行应用程序时会出现相同的错误。而且我注意到如果我创建一个 APK,文件甚至不会被导出! 那么我如何告诉 Eclipse 将 *.so.MAJOR 文件打包为库? 或者,我如何编译共享对象以使它们通过 *.so 而不是 *.so.MAJOR 相互引用?
编辑:似乎没有办法打包*.so.XYZ 文件automatically。
【问题讨论】:
标签: android shared-libraries native