相关疑难解决方法(0)

Android上的FFMpeg,未定义的对libavcodec函数的引用,尽管它在命令行中列出

我对ffmpeg的libavcodec函数的未解析引用有问题,到目前为止在其他地方找不到答案(包括我的想法):)

让我来描述我的设置 - 它需要空间,但是非常基本,可能是我没有看到一些错误......

我使用ndk r5工具链构建了一个FFMPeg,我从http://bambuser.com/opensource获得了ffmpeg端口(在此处的其他问题中推荐).它构建得很好,所以我在我的项目中放了几个静态库,如下所示:

<project>/jni/bambuser_ffmpeg/libavcodec.a
<project>/jni/bambuser_ffmpeg/libavformat.a
<project>/jni/bambuser_ffmpeg/libavcore.a
<project>/jni/bambuser_ffmpeg/libavutil.a
Run Code Online (Sandbox Code Playgroud)

接下来,我在bambuser_ffmpeg文件夹中创建了一个Android.mk,将这些库列为预构建的库:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := bambuser-libavcore
LOCAL_SRC_FILES := libavcore.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := bambuser-libavformat
LOCAL_SRC_FILES := libavformat.a
include $(PREBUILT_STATIC_LIBRARY)

(same for other two libs)
Run Code Online (Sandbox Code Playgroud)

接下来,我有另一个模块在其Android.mk中引用这些库,设置包含路径等:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := ffmpegtest
LOCAL_STATIC_LIBRARIES := bambuser-libavcodec bambuser-libavcore bambuser-libavformat bambuser-libavutil
LOCAL_SRC_FILES := ffmpeg_test.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../bambuser_ffmpeg/include
LOCAL_LDLIBS    := -llog -lz

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

最后我有我的ffmpeg_test.cpp这是非常基本的,像这样:

#include <jni.h>

extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h> …
Run Code Online (Sandbox Code Playgroud)

android ffmpeg android-ndk

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×1

android-ndk ×1

ffmpeg ×1