【问题标题】:Linking C++ OpenCV to an app in Android Studio将 C++ OpenCV 链接到 Android Studio 中的应用程序
【发布时间】:2022-01-20 17:41:00
【问题描述】:

我正在使用 Android Studio 将使用 OpenCV 的现有 C++ 代码集成到 Android 应用程序中。为此,我安装了包OpenCV-android-sdk 并将其作为模块添加到Android Studio。我还创建了一个简单的 Kotlin 应用程序。

到目前为止,我已经设法将我的 C++ 代码集成到项目中。通过include_directories语句添加OpenCV的路径后,代码编译成功。

我的下一步是链接预编译的 OpenCV 库,以解决“未定义符号”错误。我不知道如何实现这个/在哪里指定它。我试图在网上找到资源,但没有两个资源相同,而且解决方案似乎过于复杂。我迷失在丛林中。

【问题讨论】:

  • 您是否在运行时通过 logcat 收到未定义符号错误?如果是的话,你能发布一个例子吗?
  • @FlorianEchtler:没有运行时,因为应用程序没有构建!
  • 你有构建错误信息的例子吗?
  • @FlorianEchtler:没什么特别的,链接器错误:“C/C++: D:/Sources/OpenCV454/OpenCV-android-sdk/sdk/libcxx_helper/dummy.cpp:20: error: undefined reference to 'cv::Mat::~Mat()'"
  • 我猜,你需要以某种方式将opencv的预编译库路径提供给编译器。我认为这个链接stackoverflow.com/questions/54405275/… 会有所帮助。

标签: android c++ opencv


【解决方案1】:

我终于成功了。配方来了(在 Windows 下验证)。

确保下载OpenCV Android SDK并将其复制到某处。

项目必须创建为Native C++ 应用程序(手机和平板电脑)。使用native-lib.cpp 源文件和CMakeLists.txt 自动创建cpp 文件夹。

将以下行添加到CMakeLists 文件中,在project 行之后:

set(OpenCV_DIR $ENV{OPENCV_ANDROID}/sdk/native/jni)
find_package(OpenCV REQUIRED)

您必须定义环境变量OPENCV_ANDROID 并使其指向您复制的文件夹.../OpenCV-android-sdk。 (或者,您可以在 set 命令中对路径进行硬编码。)

然后在底部插入

target_link_libraries(app_name ${OpenCV_LIBS})

其中OpenCV_LIBS 指向文件夹.../OpenCV-android-sdk/sdk/native/libsapp_name 是您在创建应用时指定的名称。

最后,交叉手指构建。

【讨论】:

    猜你喜欢
    • 2015-11-16
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多