【发布时间】: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