在另一个NDK lib项目中包含预构建的静态/共享NDK库

时间:2015-06-23 13:53:41

标签: android c++ c android-ndk

所以我想做的是:

  1. 使用C ++为NDK构建渲染插件(传递位图+ textureID并在纹理上渲染位图)。这很好。

  2. 将渲染插件添加到使用ffmpeg解码视频的C(for NDK)项目中,视频的每一帧都会传递到渲染插件进行显示。

  3. 我可以将渲染插件构建到C项目中,并将相关文件移动到Obj/local/libs/目录(我已尝试过静态和共享构建渲染器)。但是,我无法将其包含在实际的C代码中。

    目录如下所示:

    Directory Structure

    当我尝试在代码中添加#include <renderplugin.h>时,它不会链接,说file or directory could not be found

    Android.mk文件夹中的jni

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := NativeMediaPlayer
    LOCAL_SRC_FILES := NativeMediaPlayer.c
    LOCAL_LDLIBS := -llog -lz -lGLESv2
    LOCAL_SHARED_LIBRARIES := libavformat libavcodec libavutil liblog libswscale NativeRenderPlugin
    
    include $(BUILD_SHARED_LIBRARY)
    #ffmpeg
    $(call import-add-path, ../)
    $(call import-module, NativeMediaPlayer/external)
    #render plugin
    $(call import-add-path, jni)
    $(call import-module, prebuilt)
    

    插件所在的Android.mk文件夹中的prebuilt

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := libNativeRenderPlugin
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/lib/libNativeRenderPlugin.so
    LOCAL_EXPORT_C_INCLUDES += $(TARGET_ARCH_ABI)/include
    include $(PREBUILT_SHARED_LIBRARY)
    

1 个答案:

答案 0 :(得分:0)

它似乎与放置库的位置有关,在将它们移动到与ffmpeg库相同的文件夹(并更新makefile)之后,包现在正在正常工作。