OpenCV - 错误 C2244

Posted

技术标签:

【中文标题】OpenCV - 错误 C2244【英文标题】:OpenCV - Error C2244 【发布时间】:2011-01-21 21:03:34 【问题描述】:

我目前正在远离我的桌面度假,但是我想练习我的 c++ 尤其是 openCV,所以我带上了我的笔记本电脑。考虑到时间和家庭的限制,我没有在起飞前及时把图书馆的一切都准备好。

我已经设置了关于 VS 2010 的所有内容,就像我记得不久前在我的桌面上所做的那样,但是在 openCV 网站 (http://opencv.willowgarage.com/wiki/VisualC%) 上编译测试示例时2B%2B) 我收到以下错误:

Error   3   error C2244: 'cv::Matx<_Tp,,>::diag' : unable to match function definition to an existing declaration   C:\Program Files\OpenCV2.2\include\opencv2\core\operations.hpp  372
Error   4   error C2244: 'cv::Matx<_Tp,,>::diag' : unable to match function definition to an existing declaration   C:\Program Files\OpenCV2.2\include\opencv2\core\operations.hpp  448

这反过来告诉我:

template<typename _Tp, int m, int n> inline Matx<_Tp,m,n> Matx<_Tp,m,n>::diag(const Matx<_Tp,MIN(m,n),1>& d) Matx<_Tp,m,n> M; for(int i = 0; i < MIN(m,n); i++) M(i,i) = d[i]; return M;

template<typename _Tp, int m, int n> inline Matx<_Tp, MIN(m,n), 1> Matx<_Tp, m, n>::diag() const diag_type d; for( int i = 0; i < MIN(m, n); i++ ) d.val[i] = val[i*n + i]; return d;

我在 msdn 和 openCV 论坛上查看过这个错误,但我找不到这个特定错误的记录,我不知道如何解决它。

我运行的是 64 位版本的 Windows 7 是否也有问题?我读到 openCV2.2 是兼容的,但是之前在程序编译时,它一直说 .dll 文件丢失,即使 PATH 变量和目录是正确的。

谢谢, 让-皮埃尔

【问题讨论】:

没有 64 位版本的 VS2010,将其从列表中划掉以便于解释。再来一杯 piña colada,这可以等到你回来。 呸,这让我可以在睡眠时间之外打字。我的意思是windows 7 64bit而不是vs2010。 - 我会编辑那个。由于家庭原因,我在这里一直待到 3 月底,所以要等很久了! 【参考方案1】:

我在 32 位 Win7 VS2010 和 QT 4.7.2 上运行 Opencv2.2 时遇到了同样的问题。

我似乎不是一个影响代码实际功能的错误。当我按照上面描述的 Himanshu jain 关闭代码分析时,它解决了问题。

【讨论】:

【参考方案2】:

似乎确实是选项高级编译器选项“/分析”导致了这个问题(我在 Win XP 32 位上使用 OpenCV 2.2 和 VS 2008)。我可以修复第一个错误:

在第 365 行,您必须将 Matx&lt;_Tp,MIN(m,n),1&gt; 替换为 diag_type,即这个

template<typename _Tp, int m, int n> inline
Matx<_Tp,m,n> Matx<_Tp,m,n>::diag(const Matx<_Tp,MIN(m,n),1>& d)

变成

template<typename _Tp, int m, int n> inline
Matx<_Tp,m,n> Matx<_Tp,m,n>::diag(const diag_type& d)

不幸的是,第二个错误仍然发生——我没有办法摆脱它,只能停用\analyze :-(

1>D:\OpenCV2.2\include\opencv2/core/operations.hpp(447) : error C2244: 'cv::Matx<_Tp,,>::diag':  
unable to match function definition to an existing declaration

如果您找到解决此问题的方法,请告诉我——我想我会继续在 OpenCV Trac 上发布错误报告票...

【讨论】:

以上是关于OpenCV - 错误 C2244的主要内容,如果未能解决你的问题,请参考以下文章

cmake错误:opencv2/opencv.hpp:opencv2/opencv.hpp:没有这样的文件或目录

opencv错误:错误:OpenCV(4.2.0)/io/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210:错误:(-213:功能/功能未实现)

opencv中的长错误

OpenCV 错误:互相关中的断言失败

ubuntu上opencv中的错误/usr/include/opencv2/nonfree/features2d.hpp错误向量

急!求解vc2010下opencv2.4.3编译错误 fatal error C1083: 无法打开包括文件:“opencv2/opencv.hpp”