我想建立一个.so C ++库,并使用Visual Studio链接到OpenCV。 (我的目标是制作一个在Unity中使用.so文件的apk)
我在Visual Studio中创建了跨平台的动态共享库项目,并设置了适当的项目设置。
在链接器>输入>其他依赖关系中,我向从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
答案 0 :(得分:0)
我不知道在4.1.0版本中发生此问题的原因。 但是,将OpenCV版本从4.1.0更改为 3.4.6 后,此问题已解决。