android - mediaNdk 未定义对 'AMediaCodec_signalEndOfInputStream' 的引用

标签 android android-ndk android-mediacodec

在链接过程中找不到 AMediaCodec_signalEndOfInputStream

ExportThread.cpp来源

configure file

apilevel android-21

这是我的配置

CmakeLists.txt

target_link_libraries(${Lib_Name}

                       android
                       mediandk
                       EGL
                       GLESv3
                       log )

gradle.build

        ndk {
            abiFilters 'armeabi-v7a'
//            , 'armeabi-v7a', 'arm64-v8a'
        }
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-21'
            }
        }

错误

[35/35] Linking CXX shared library /Users/rqg/ASProjects/PboTest/muses/build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so
  FAILED: : && /Users/rqg/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=armv7-none-linux-androideabi --gcc-toolchain=/Users/rqg/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64 --sysroot=/Users/rqg/Library/Android/sdk/ndk-bundle/sysroot -fPIC -isystem /Users/rqg/Library/Android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security   -std=c++11 -frtti -fexceptions -Wall -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a --sysroot /Users/rqg/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libnative-lib.so -o /Users/rqg/ASProjects/PboTest/muses/build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so CMakeFiles/native-lib.dir/DecodeThread.cpp.o CMakeFiles/native-lib.dir/DelayThread.cpp.o CMakeFiles/native-lib.dir/EffectLine.cpp.o CMakeFiles/native-lib.dir/EffectManager.cpp.o CMakeFiles/native-lib.dir/ExportThread.cpp.o CMakeFiles/native-lib.dir/NativeSurfaceTexture.cpp.o CMakeFiles/native-lib.dir/Painter.cpp.o CMakeFiles/native-lib.dir/PboPool.cpp.o CMakeFiles/native-lib.dir/Player.cpp.o CMakeFiles/native-lib.dir/PrepareThread.cpp.o CMakeFiles/native-lib.dir/RenderManager.cpp.o CMakeFiles/native-lib.dir/RenderTask.cpp.o CMakeFiles/native-lib.dir/effect/BlurEffect.cpp.o CMakeFiles/native-lib.dir/effect/BoostEffect.cpp.o CMakeFiles/native-lib.dir/effect/ChaplinEffect.cpp.o CMakeFiles/native-lib.dir/effect/Effect.cpp.o CMakeFiles/native-lib.dir/effect/FadeEffect.cpp.o CMakeFiles/native-lib.dir/effect/NormalEffect.cpp.o CMakeFiles/native-lib.dir/framesource/IFrameSource.cpp.o CMakeFiles/native-lib.dir/framesource/ImageFrameSource.cpp.o CMakeFiles/native-lib.dir/framesource/VideoFrameSource.cpp.o CMakeFiles/native-lib.dir/gl/EglCore.cpp.o CMakeFiles/native-lib.dir/gl/surface/EglSurfaceBase.cpp.o CMakeFiles/native-lib.dir/gl/surface/OffscreenSurface.cpp.o CMakeFiles/native-lib.dir/gl/surface/WindowSurface.cpp.o CMakeFiles/native-lib.dir/native-lib.cpp.o CMakeFiles/native-lib.dir/render/BlurRender.cpp.o CMakeFiles/native-lib.dir/render/FadeRender.cpp.o CMakeFiles/native-lib.dir/render/NormalRender.cpp.o CMakeFiles/native-lib.dir/render/PolygonOffsetRenderer.cpp.o CMakeFiles/native-lib.dir/render/Render.cpp.o CMakeFiles/native-lib.dir/util/DelayLooper.cpp.o CMakeFiles/native-lib.dir/util/Looper.cpp.o CMakeFiles/native-lib.dir/util/common.cpp.o  -landroid -lmediandk -lEGL -lGLESv3 -llog -lm "/Users/rqg/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a" && :
  /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/ExportThread.cpp:37: error: undefined reference to 'AMediaCodec_signalEndOfInputStream'
  /Users/rqg/ASProjects/PboTest/muses/src/main/cpp/ExportThread.cpp:107: error: undefined reference to 'AMediaCodec_createInputSurface'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

最佳答案

这是 NDK r.15 中的错误。此 API 仅在 android-26 中引入。顺便说一句,您可以依靠 Android Studio 将 -DANDROID_PLATFORM 设置为对应于 build.gradle 中选择的 minSdkVersion

关于android - mediaNdk 未定义对 'AMediaCodec_signalEndOfInputStream' 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45251937/

相关文章:

java - 套接字流的 flush() 有多可靠?

Android NDK - 原生 C++ 代码的静态分析

java - 在附加的堆栈跟踪中获取了资源,但从未释放。内存泄漏

java - 如何在我的 Android.mk 中使用 Android tesseract Android.mk 文件?

android - 暂停/恢复 MediaCodec

android - 当元数据旋转不正确时如何获取视频旋转角度?

android - 如何将 DatePicker 对话框的背景颜色从默认的白色更改?

android - 如何使用广播接收器检测蓝牙状态变化?

android - 尝试将 github 项目导入 Android 项目

android - MediaCodec 缓冲区下溢异常