для университетского проекта. Я делаю порт алгоритма ручного отслеживания для Android. Алг. в основном использует функции OpenCV. Честно говоря, я не очень понимаю, что такое ALG. делает, но это не моя проблема.
Так что для портирования ALG. Я добавил каждый файл из рабочего проекта Windows Visual Studio в свой проект Android, исправляя некоторые предупреждения и ошибки компилятора тут и там. В основном с успехом ...
К сожалению, есть один файл, который беспокоит меня много-много часов.
Компиляция этого файла выдает следующие ошибки:
./obj/local/armeabi-v7a/libopencv_legacy.a(compat.o): In function `cvFindChessBoardCornerGuesses':
compat.cpp:(.text.cvFindChessBoardCornerGuesses+0x18): undefined reference to `cvFindChessboardCorners'
./obj/local/armeabi-v7a/libopencv_legacy.a(compat.o): In function `cvHoughLines':
compat.cpp:(.text.cvHoughLines+0x46): undefined reference to `cvHoughLines2'
./obj/local/armeabi-v7a/libopencv_legacy.a(compat.o): In function `cvHoughLinesSDiv':
compat.cpp:(.text.cvHoughLinesSDiv+0x54): undefined reference to `cvHoughLines2'
./obj/local/armeabi-v7a/libopencv_legacy.a(compat.o): In function `cvHoughLinesP':
compat.cpp:(.text.cvHoughLinesP+0x52): undefined reference to `cvHoughLines2'
./obj/local/armeabi-v7a/libopencv_legacy.a(compat.o): In function `cvCalcEMD':
compat.cpp:(.text.cvCalcEMD+0x44): undefined reference to `cvCalcEMD2'
collect2: ld returned 1 exit status
Самое смешное, что единственная строка, вызывающая эту ошибку, -
nPointsConnected ++;
Комментирование этой строки или уменьшение nPointsConnected или установка значения, такого как nPointsConnected = 1, приводит к исчезновению ошибки компоновщика.
В проекте есть и другие файлы, включая те же заголовки OpenCV, которые компилируются нормально.
Кто-нибудь может объяснить мне это?
пожалуйста ...
EDIT
Это код окружения:
if ( minK > FINGERTIP_ANGLE_THRESHOLD && minDir > 0 )
{
nPointsGap = 0;
if ( nPointsConnected == 0 )
{
startIndex = i;
}
nPointsConnected ++;
if ( minAngle < minK )
{
minAngle = minK;
minPointIndex = i;
}
fConnected = true;
mediumIndex += ( minK * i );
meanPointX += ( minK * contour[i].x );
meanPointY += ( minK * contour[i].y );
sumAngle += minK;
if ( fScreenshot )
{
cvCircle( pScreenshot_curvature, cvPoint(contour[i].x*2, contour[i].y*2),
4, CV_RGB(255,255,0), -1, 8, 0 );
cvCircle( pScreenshot_ellipse, cvPoint(contour[i].x*2, contour[i].y*2),
4, CV_RGB(255,255,0), -1, 8, 0 );
}
}