【发布时间】:2026-02-09 03:35:01
【问题描述】:
我有兴趣在我的系统上使用 Kota Yamaguchi's mexopencv library 并具有以下规格:
- OS X 10.9(小牛队)
- Xcode 5
- Matlab 2013b
- OpenCV 通过 macports 安装到 /opt/local/include/{opencv,opencv2} 和 /opt/local/lib
我使用 mexopencv 网站上的命令克隆了最新的 OpenCV 版本;这是 2013 年 7 月 20 日星期六 05:18:37 -0700 的版本 084838d62a25fcb3eec9f610abf91b167bc6c2f5。
我运行 Matlab 的 mex -setup 命令,然后从 Mathworks 实现 this workaround 以使用 Xcode 5 作为我的 mex 编译器。
我用matlab命令setenv('PATH', [getenv('PATH') ':/opt/local/bin']);将macports的pkg-config命令添加到路径中
现在,运行 mxopencv.make 会产生以下链接器错误消息:
Undefined symbols for architecture x86_64:
"cv::merge(std::vector<cv::Mat, std::allocator<cv::Mat> > const&, cv::_OutputArray const&)", referenced from:
MxArray::toMat(int, bool) const in libMxArray.a(MxArray.o)
"cv::split(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >&)", referenced from:
MxArray::MxArray(cv::Mat const&, mxClassID, bool) in libMxArray.a(MxArray.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
mex: link of ' "+cv/CamShift.mexmaci64"' failed.
make: *** [+cv/CamShift.mexmaci64] Error 255
我现在不知道该怎么做。是否可以在我的系统上构建 mexopencv?
【问题讨论】:
-
Mac 的文档中没有任何内容。但是如果make去CamShift,这意味着你可以编译之前的所有其他文件吗?您是否尝试删除 CamShift.cpp ?
-
看看this
-
@AlexandreBizeau,如果我删除 CamShift,我只会在下一个文件(即 Canny)上收到相同的错误消息。您提到的另一篇文章是在 Xcode 中构建 OpenCV,而不是使用 Matlab 的 mex 命令构建 mexopencv。
-
我确实注意到,如果我关注Mathworks' steps for building using Xcode 5,这涉及修改我的 mexopts.sh 副本,而是将目标设置为 OS X 10.9 而不是 10.8,我会收到更多错误。所以也许 mexopencv 中的某些东西是为 OS X 10.7 编译的,与我的 10.8 目标不兼容?
-
这是我的确切问题。我们可能是唯一有这个问题的人。我想知道是否遵循所有 Matlab 设置部分可以让我编译/链接 gitHub 上 openCV 开发仓库中包含的绑定。