【问题标题】:undefined reference to `cv::error(int, std::string const&, char const*, char const*, int)'未定义对 `cv::error(int, std::string const&, char const*, char const*, int)' 的引用
【发布时间】:2019-07-01 04:14:15
【问题描述】:

我想用 Visual Studio 构建一个带有 OpenCV 链接的 .so C++ 库。 (我的目标是在 Unity 中制作一个使用 .so 文件的 apk)

我在 Visual Studio 中制作了跨平台动态共享库项目并设置了适当的项目设置。

在 Linker > Input > Additional Dependencies 中,我添加了从 here 下载的 openCV .so 文件的路径

在 Visual Studio 中,我可以构建以下代码。

void OpenCVForAndroid::TestMethod()
{
    cv::Mat img(10, 10, CV_8UC1);
}

但是下面的代码会出错。

void OpenCVForAndroid::TestMethod()
{
    void* ddd = malloc(sizeof(int));
    cv::Mat img(100, 100, CV_8UC4, ddd);
}

1>C:\Users\ddd\Downloads\opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk\native\jni\include\opencv2/core/mat.inl.hpp:548: 对cv::error(int, std::string const&, char const*, char const*, int)的未定义引用

1>C:\Users\ddd\Downloads\opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk\native\jni\include\opencv2/core/mat.inl.hpp:561: 对cv::error(int, std::string const&, char const*, char const*, int)的未定义引用

这是因为构造函数 Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP) 包含cv::error,链接器找不到它。

我以为libopencv_java4.so 会有cv::error.. 但也许没有。

我的代码或设置有什么问题? cv::error 定义在哪里?

提前致谢:D

【问题讨论】:

  • 我有同样的错误。问题是 .h 和 .so 文件的版本不兼容。
  • @sklott 真的很奇怪。头文件路径设置为:opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk\native\jni\include\opencv2。所有相关的头文件和so文件都来自同一个文件夹。

标签: android c++ visual-studio opencv unity3d


【解决方案1】:

我不知道在 4.1.0 版本中出现此问题的原因。 但是,将 OpenCV 版本从 4.1.0 更改为 3.4.6 后问题得到解决。

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 2014-10-18
    • 2020-09-17
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2016-09-29
    相关资源
    最近更新 更多