【问题标题】:Compiling QtAV Library for Android为 Android 编译 QtAV 库
【发布时间】:2020-11-09 10:56:15
【问题描述】:

一个多星期以来,我正在尝试按照以下说明从 Windows 10 机器构建适用于 Android 的 QtAV 1.12.0:

https://github.com/wang-bin/QtAV/wiki/Build-QtAV

我正在使用

  • 来自 git 的 QtAV 1.12.0。
  • Qt 5.12.4(已尝试 5.14.0,但参考 https://github.com/wang-bin/QtAV/issues/1262 存在不同/新问题)
  • JDK 1.8.0
  • NDK 19.2(也试过 21.1)
  • Android SDK 26.1.1
  • ffmpeg 依赖项:ffmpeg-3.1.4-anrdoid-armv7a-clang 从这里: https://sourceforge.net/projects/qtav/files/depends/FFmpeg/android/
  • 我从该页面尝试了不同的 android ffmpeg 依赖项,都导致了相同(甚至更早)的错误。
  • 将 ffmpeg 依赖项(/lib、/include、/share、...)复制到 ..\Qt\Qt5.12.4\5.12.4\android_armv7 文件夹
  • 将 ffmpeg 依赖项复制到项目根目录,并将 INCLUDEPATH 和 LIBS 添加到 qtav.pro 文件(后来甚至添加到 .qmake.conf)

Android 设备设置很好,除了 OpenSSL 部分。我想这无关紧要,对吧? (无论如何,我都可以将我的应用程序部署到我的安卓手机上。)

我正在使用 Qt Creator 4.12.3 进行构建,但遇到了错误。构建过程在 108 个警告和 2 个错误时中止:

错误:找不到 -lass clang++.exe:-1: Fehler: error: linker command failed with exit code 1 (use -v to see invocation)

但在 /config.log 方式中会发生较早的错误,我认为这可能会级联到上面的结果:

> C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc -工具链 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -Wl,- -exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -Wl,--exclude-libs,libunwind.a --sysroot=C:\Users\User\AppData\Local\Android\Sdk \ndk\19.2.5345600/platforms/android-16/arch-arm/ -Wl,--enable-new-dtags -Wl,--no-undefined -Wl,-z,noexecstack -shared -Wl,-soname, libavresample.so -o libavresample.so main.obj -lavresample -LC:/Qt/Qt5.12.4/5.12.4/android_armv7/lib -LC:\Users\User\AppData\Local\Android\Sdk\ndk\19.2。 5345600/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/libs/ armeabi-v7a/libc++.so.16 -llog -lz -lm -ldl -lc > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9。 x/../../../../arm-linux-androideabi/bin\ld: 错误:找不到-lavresample > clang++.exe:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) > mingw32-make: *** [Makefile:71: libavresample.so] 错误 1 测试 avresample 失败 执行配置测试avfilter + cd /d C:\build-QtAV-USERDEF_Android\config.tests\avfilter && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/avfilter + cd /d C:\build-QtAV-USERDEF_Android\config.tests\avfilter && set MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -mthumb -Oz -std=gnu+ +11 -Wall -W -fPIC -D__STDC_CONSTANT_MACRO S -IC:\QtAV\config.tests\avfilter -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\avfilter\main.cpp > 删除 libavfilter.so > C:\build-QtAV-USERDEF_Android\config.tests\avfilter\libavfilter.so konnte nicht gefunden werden > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc -工具链 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -Wl,- -exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -Wl,--exclude-libs,libunwind.a --sysroot=C:\Users\User\AppData\Local\Android\Sdk \ndk\19.2.5345600/platforms/android-16/arch-arm/ -Wl,--enable-new-dtags -Wl,--no-undefined -Wl,-z,noexecstack -shared -Wl,-soname, libavfilter.so -o libavfilter.so main.obj -lavfilter -LC:/Qt/Qt5.12.4/5.12.4/android_armv7/lib -LC:\Users\User\AppData\Local\Android\Sdk\ndk\19.2。 5345600/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/libs/ armeabi-v7a/libc++.so.16 -llog -lz -lm -ldl -lc 测试avfilter成功 执行配置测试 avdevice + cd /d C:\build-QtAV-USERDEF_Android\config.tests\avdevice && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/avdevice + cd /d C:\build-QtAV-USERDEF_Android\config.tests\avdevice && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -mthumb -Oz -std=gnu+ +11 -Wall -W -fPIC -D__STDC_CONSTANT_MACRO S -IC:\QtAV\config.tests\avdevice -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\avdevice\main.cpp > 删除 libavdevice.so > C:\build-QtAV-USERDEF_Android\config.tests\avdevice\libavdevice.so konnte nicht gefunden werden > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc -工具链 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -Wl,- -exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -Wl,--exclude-libs,libunwind.a --sysroot=C:\Users\User\AppData\Local\Android\Sdk \ndk\19.2.5345600/platforms/android-16/arch-arm/ -Wl,--enable-new-dtags -Wl,--no-undefined -Wl,-z,noexecstack -shared -Wl,-soname, libavdevice.so -o libavdevice.so main.obj -lavdevice -LC:/Qt/Qt5.12.4/5.12.4/android_armv7/lib -LC:\Users\User\AppData\Local\Android\Sdk\ndk\19.2。 5345600/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/libs/ armeabi-v7a/libc++.so.16 -llog -lz -lm -ldl -lc > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9。 x/../../../../arm-linux-androideabi/bin\ld: 错误:找不到-lavdevice > clang++.exe:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) > mingw32-make: *** [Makefile:71: libavdevice.so] 错误 1 测试 avdevice 失败 执行配置测试 sse4_1 + cd /d C:\build-QtAV-USERDEF_Android\config.tests\sse4_1 && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/sse4_1 + cd /d C:\build-QtAV-USERDEF_Android\config.tests\sse4_1 && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -msse4.1 -g -g - marm -O0 -std=gnu++11 -Wall -W -fPIC -IC:\QtAV \config.tests\sse4_1 -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o sse4_1.obj C:\QtAV\config.tests\sse4_1\sse4_1.cpp > clang++.exe:警告:编译期间未使用的参数:'-msse4.1' [-Wunused-command-line-argument] > 在 C:\QtAV\config.tests\sse4_1\sse4_1.cpp:42 包含的文件中: > 在 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\smmintrin.h 中包含的文件中: 27: > 在 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\tmmintrin.h 中包含的文件中: 27: > 在 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\pmmintrin.h 中包含的文件中: 27: > 在 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\emmintrin.h 中包含的文件中: 27: > 在 C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\xmmintrin.h 中包含的文件中: 27: > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:47:5:错误:使用未声明的标识符“__builtin_ia32_emms”;你的意思是'__builtin_isless'吗? > __builtin_ia32_emms(); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:47:5:注意:此处声明的“__builtin_isless” > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:47:25:错误:函数调用的参数太少,预期为 2,有 0 > __builtin_ia32_emms(); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:64:19:错误:使用未声明的标识符“__builtin_ia32_vec_init_v2si” > 返回 (__m64)__builtin_ia32_vec_init_v2si(__i, 0); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:81:12:错误:使用未声明的标识符“__builtin_ia32_vec_ext_v2si” > 返回 __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:143:19:错误:使用未声明的标识符“__builtin_ia32_packsswb” > 返回 (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:173:19:错误:使用未声明的标识符“__builtin_ia32_packssdw” > 返回 (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:203:19:错误:使用未声明的标识符“__builtin_ia32_packuswb” > 返回 (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:230:19:错误:使用未声明的标识符“__builtin_ia32_punpckhbw” > 返回 (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:253:19:错误:使用未声明的标识符“__builtin_ia32_punpckhwd” > 返回 (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:274:19:错误:使用未声明的标识符“__builtin_ia32_punpckhdq” > 返回 (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:301:19:错误:使用未声明的标识符“__builtin_ia32_punpcklbw” > 返回 (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:324:19:错误:使用未声明的标识符“__builtin_ia32_punpcklwd” > 返回 (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:345:19:错误:使用未声明的标识符“__builtin_ia32_punpckldq” > 返回 (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:366:19:错误:使用未声明的标识符“__builtin_ia32_paddb” > 返回 (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:387:19:错误:使用未声明的标识符“__builtin_ia32_paddw” > 返回 (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:408:19:错误:使用未声明的标识符“__builtin_ia32_paddd” > 返回 (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:430:19:错误:使用未声明的标识符“__builtin_ia32_paddsb” > 返回 (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:453:19:错误:使用未声明的标识符“__builtin_ia32_paddsw” > 返回 (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2); > ^ > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\8.0.2\include\mmintrin.h:475:19:错误:使用未声明的标识符“__builtin_ia32_paddusb” > 返回 (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2); > ^ > 致命错误:发出的错误太多,现在停止 [-ferror-limit=] > 生成 20 个错误。 > mingw32-make: *** [Makefile:438: sse4_1.obj] 错误 1 测试 sse4_1 失败 执行配置测试开放 + cd /d C:\build-QtAV-USERDEF_Android\config.tests\openal && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/openal + cd /d C:\build-QtAV-USERDEF_Android\config.tests\openal && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -O2 -O2 -mthumb -IC: \QtAV\config.tests\openal -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\openal\main.cpp > 删除 libopenal.a > C:\build-QtAV-USERDEF_Android\config.tests\openal\libopenal.a konnte nicht gefunden werden > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar cqs libopenal。一个 main.obj > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ranlib libopenal.a 测试公开成功 执行配置测试 libass + cd /d C:\build-QtAV-USERDEF_Android\config.tests\libass && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/libass + cd /d C:\build-QtAV-USERDEF_Android\config.tests\libass && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -O2 -O2 -mthumb -IC: \QtAV\config.tests\libass -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\libass\main.cpp > 删除 liblibass.a > C:\build-QtAV-USERDEF_Android\config.tests\libass\liblibass.a konnte nicht gefunden werden > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar cqs liblibass.一个 main.obj > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ranlib liblibass.a 测试 libass 成功 执行配置测试 uchardet + cd /d C:\build-QtAV-USERDEF_Android\config.tests\uchardet && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/uchardet + cd /d C:\build-QtAV-USERDEF_Android\config.tests\uchardet && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -mthumb -Oz -std=gnu+ +11 -Wall -W -fPIC -IC:\QtAV\config.tests \uchardet-我。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\uchardet\main.cpp > C:\QtAV\config.tests\uchardet\main.cpp:21:10: 致命错误: 'ucharet/uchardet.h' 文件未找到 > #包括 > ^~~~~~~~~~~~~~~~~~~~~~~~ > 1 个错误生成。 > mingw32-make: *** [Makefile:451: main.obj] 错误 1 测试 uchardet 失败 执行配置测试 libcedarv + cd /d C:\build-QtAV-USERDEF_Android\config.tests\libcedarv && C:\Qt\Qt5.12.4\5.12.4\android_armv7\bin\qmake.exe -spec C:/Qt/Qt5.12.4/ 5.12.4/android_armv7/mkspecs/android-clang "CONFIG -= qt debug_and_release app_bundle lib_bundle" C:/QtAV/config.tests/libcedarv + cd /d C:\build-QtAV-USERDEF_Android\config.tests\libcedarv && 设置 MAKEFLAGS=& mingw32-make > C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -DANDROID_HAS_WSTRING --sysroot=C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sysroot /usr/include/arm-linux-androideabi -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx-stl/llvm-libc++/include -isystem C:\Users \User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/android/support/include -isystem C:\Users\User\AppData\Local\Android\Sdk\ndk\19.2.5345600/sources/cxx -stl/llvm-libc++abi/include -fstack-protector-strong -DANDROID -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove -mthumb -Oz -std=gnu+ +11 -Wall -W -fPIC -IC:\QtAV\config.tests \libcedarv -I。 -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\include -IC:\QtAV\contrib\dxsdk -IC:\Qt\Qt5.12.4\5.12.4\android_armv7\mkspecs\android-clang -o main .obj C:\QtAV\config.tests\libcedarv\main.cpp > C:\QtAV\config.tests\libcedarv\main.cpp:21:10:致命错误:找不到“libcedarv/libcedarv.h”文件 > #包括 > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > 1 个错误生成。 > mingw32-make: *** [Makefile:451: main.obj] 错误 1 测试 libcedarv 失败

我没有绑定到特定的 SDK / NDK / Qt / QtAV 版本。

我成功地为 MSVC2017 x32 和 x64 构建了 QtAV,所以我认为它一定与 ffmpeg 依赖项或整个 JDK/SDK/NDK 设置有关。有人知道我在哪里出错了吗?

由于构建开始并运行了一段时间,我认为编译器/链接器可以找到提供的依赖项,但可能不完整?

请注意:AFAIK 需要 libass 内容才能在视频中显示字幕。我不需要该功能(我想从摄像机流式传输 rstp 实时流)。禁用模块作为解决方法,例如带有 CONFIG -= 开关,也是一个受欢迎的解决方案,值得一试。

我不确定的是 Kit/sysroot 行。这里有什么要求吗?默认为空。

【问题讨论】:

    标签: android c++ qt


    【解决方案1】:

    这不是直接回答你的问题,但它仍然可以帮助你避免它:

    QtAV 库已由其开发人员在新项目“MDK-SDK”下从头开始重写(链接如下)。

    https://github.com/wang-bin/mdk-sdk

    因为这些库构建起来非常复杂,有很多依赖项,所以他为大多数平台提供二进制文件作为夜间构建。

    https://sourceforge.net/projects/mdk-sdk/files/nightly/

    注意:商业应用程序并非免费提供许可证(但价格合理),并且该库运行良好且性能良好。

    【讨论】:

    • 嗨,亚历山大,感谢您的回复!这就是为什么这个很棒的项目 QtAV 自 2017 年以来没有继续下去的原因。我会检查一下。
    猜你喜欢
    • 2017-07-14
    • 2020-04-23
    • 2020-08-02
    • 1970-01-01
    • 2012-12-28
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多