【发布时间】:2021-08-18 23:47:18
【问题描述】:
我尝试使用 Visual Studio 2019 和 OpenCV Android 编译一个 .so 库,以便在 Unity 中使用该库。 关于如何配置 Visual Studio 以使用 OpenCV Android(here 或 here)有一些答案,但这些都不适合我。下面你可以看到我的配置。
Visual Studio 2019(在 Windows 10 上运行)
android-ndk-r21e // 也试过 android-ndk-r15c android-ndk-r16b 和 android-ndk-r17c
OpenCV Android 4.5.2 // 也尝试使用 OpenCV Android 4.0.0、4.0.1 和 4.1.0
我在 Visual Studio 2019 中的设置如下所示:
配置属性
- 一般
-
平台工具集Clang 5.0(也尝试过 Clang 3.8 或 GCC 4.9)
-
配置类型动态库(.so)
-
目标 API 级别 Nougat 7.0 (android-24)(也尝试了不同的版本)
-
使用 STL LLVM libc++ 静态库 (c++_static)(也试过“GNU STL 静态库 (gnustl_static)”)
C/C++
- 一般
-
其他包含目录“OpenCV_4_5_2_Android\sdk\native\jni\include 的路径”
-
代码生成启用 C++ 异常“Yes(-fexceptions)”
-
语言C++17(-std=c++1z)
-
预编译头文件不使用预编译头文件
链接器
- 一般
- 其他库目录OpenCV_4_5_2_Android\sdk\native\libs\armeabi-v7a 的路径
- 输入
- 其他依赖项OpenCV_4_5_2_Android\sdk\native\libs\armeabi-v7a\libopencv_java4.so 的路径
我尝试编译的我的 Source.cpp 只是一个用于测试目的的函数
#include <opencv2/core.hpp>
extern "C" float test(float a, float b)
{float c = a * b; return c;}
这给了我以下错误:
E0035 #error 指令:此构造函数尚未移植到此平台
E0020 标识符“__fp16”未定义
使用未声明的标识符“ANDROID_LOG_INFO”
当我在引发此错误的文件顶部添加#include "android/log.h" 时,可以修复ANDROID_LOG_INFO 错误。但是其他两个错误仍然存在。
【问题讨论】:
标签: android c++ opencv visual-studio-2019 opencv4android