未定义引用`cv :: error(int,std :: string const&,char const *,char const *,int)'

时间:2019-07-01 04:14:15

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

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

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

enter image description here 在链接器>输入>其他依赖关系中,我向从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

1 个答案:

答案 0 :(得分:0)

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