OpenCV - ошибка C2244 - PullRequest
       15

OpenCV - ошибка C2244

0 голосов
/ 22 января 2011

В настоящее время я нахожусь в отпуске далеко от своего рабочего стола, однако я хотел попрактиковаться в своем 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 и каталоги были правильными.

Спасибо, Жан-Пьер

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Кажется, действительно, что опция расширенного компилятора "/ analysis" вызывает эту проблему (я использую OpenCV 2.2 с VS 2008 на Win XP 32bit).Я мог бы исправить первую ошибку:

В строке 365 вы должны заменить Matx<_Tp,MIN(m,n),1> на 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)

К сожалению, 2-ая ошибка все еще происходит - я не нашел способа избавиться от нее, кроме как деактивировать \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 сейчас ...

1 голос
/ 04 мая 2011

У меня была такая же проблема при запуске Opencv2.2 на 32-битной Win7 VS2010 и QT 4.7.2.

Кажется, я не являюсь ошибкой, которая влияет на реальную функцию кода. Когда я отключил анализ кода, как описано выше, Хайманшу джайн, это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...