【问题标题】:OpenCV ANDROID_ABI: not all variants are displayedOpenCV ANDROID_ABI:并非所有变体都显示
【发布时间】:2016-09-28 13:56:23
【问题描述】:

我从GitHub 下载了 OpenCV 2.4.13 版本。然后我使用 CMake-gui for android 配置了 CMake 项目。

有一个名为 ANDROID_ABI 的变量,我可以使用下拉列表为其选择值。但在这个列表中,我只能选择 armeabi、带有 VFP 的 armeabi-v6、带有 NEON 的 armeabi-v7a、带有 NEON 的 armeabi-v7a、带有 VFPV3 的 armeabi-v7a。

我可以使用 CMake 控制台为 arm64 配置和生成项目,或者我可以修改 cmake 脚本并手动列出它。但是当我尝试构建生成的项目时,我收到错误unknown type name '__uint128_t'__uint128_t。所以我认为我不能从下拉列表中选择这个变体是有原因的。

如何选择 arm64 变体进行构建以及为什么会出现此类错误?

【问题讨论】:

  • opencv 4.0.1 的同样问题...

标签: c++ opencv android-ndk


【解决方案1】:

您的工具链似乎没有 armv8 64 位选项。 但是有一个新的 opencv 3.0 版本,您的 uint 错误可能会得到修复:

http://opencv.org/downloads.html

如果您的工具链不支持 64 位,您可以为 arm64 制作自己的工具链。

$NDK/build/tools/make-standalone-toolchain.sh \
--arch=arm --platform=android-21 --install-dir=/tmp/my-android-toolchain

https://developer.android.com/ndk/guides/standalone_toolchain.html?hl=es

不要忘记在 cmake android 选项上将 android_native_level 设置为 21 (android 5.0.1),因为 64 位支持在具有 android 5 或更高版本的设备上完成。

【讨论】:

  • 感谢您的回复。我现在可以使用 OpenCV 3.1,但我想知道我做错了什么。如果我可以使用 NDK 使用预编译的 OpenCV 构建 arm64 .so 文件,这是否意味着我有 arm64 工具链?现在我还有其他问题。不知何故,我将 cmake 目标平台更改为 arm64,现在我构建 OpenCV 2.4.13 arm64 没有问题,但我不知道如何将其切换回 arm 平台)=。
  • 在cmake中使用默认工具链,您将拥有armeabi和armv7(不同版本),因此,您可以选择您喜欢的工具链。检查此链接github.com/taka-no-me/android-cmake/blob/master/…,有android默认工具链。干杯。
  • windows有什么方法吗?好像是linux专用的sh文件……
  • 是的,sh 文件适用于 linux,但是应该有 python 脚本来执行相同的过程,并且应该在 Windows 中工作。 $NDK/build/tools/make_standalone_toolchain.py \ --arch arm --api 21 --install-dir /tmp/my-android-toolchain 如果您在制作独立工具链时遇到问题,您可以安装 mingw linux shell for windows 来解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多