我对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)