错误:未定义引用' gst_plugin_autoaudiosink_register'

时间:2017-10-15 13:20:07

标签: android android-ndk gstreamer

我正在尝试从官方网站运行gstreamer的android教程。第一个教程工作正常,因为它没有使用任何插件。但我无法使其余的工作。在第二个教程中,问题是找不到插件之一:autoaudiosink Android Studio打开一个文件" /home/borlea/Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/ld.gold&# 34;但它没有任何可理解的东西,我得到了这些错误:
错误:错误:找不到-lgstautoaudiosink
错误:错误:未定义引用' gst_plugin_autoaudiosink_register'
错误:错误:链接器命令失败,退出代码为1(使用-v查看调用)

这是我的Android.mk文件

   LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE    := tutorial-2
    LOCAL_SRC_FILES := tutorial-2.c
    LOCAL_SHARED_LIBRARIES := gstreamer_android
    LOCAL_LDLIBS := -llog
    include $(BUILD_SHARED_LIBRARY)

    GSTREAMER_ROOT_ANDROID := /home/borlea/Downloads/gstreamer-1.0-android-universal-1.12.3

    ifndef GSTREAMER_ROOT_ANDROID
    $(error GSTREAMER_ROOT_ANDROID is not defined!)
    endif

    ifeq ($(TARGET_ARCH_ABI),armeabi)
    GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm
    else ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/armv7
    else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
    GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm64
    else ifeq ($(TARGET_ARCH_ABI),x86)
    GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86
    else ifeq ($(TARGET_ARCH_ABI),x86_64)
    GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86_64
    else
    $(error Target arch ABI not supported: $(TARGET_ARCH_ABI))
    endif

    GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/
    include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
    GSTREAMER_PLUGINS         := audiotestsrc audioconvert audioresample autoaudiosink
    include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk

我做错了什么?

构建错误的打印屏幕:

This is a print screen of the error build error I get

提前致谢。

1 个答案:

答案 0 :(得分:1)

我在尝试教程时遇到了同样的错误,如果我没记错的话,问题是Android Studio和Android.mk之间的链接。要解决它,你必须:
1.右键单击左侧导航选项卡中的“app” 2.单击“使用Gradle链接C ++项目”
3.在新窗口中:
- 将“构建系统”从“CMake”更改为“ndk-build”
- 单击“...”并浏览到Android.mk的位置“/ AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk”
- 点击OK

希望这将解决错误,但会出现另一个错误。这个教程的主要问题是它是为eclipse而制作的。因此,在对NDK,makefile.mk GStreamer和Android Studio如何工作的一些研究之后,我最终逐步介绍了如何在Android Studio上运行所有这些教程。
我给出的回答的链接是:Gstreamer examples in Android Studio
在那里你会找到图片(这是本教程的第二步)。