Это похоже на поиск иголки в стоге сена, но здесь все в порядке.
Я создаю приложение для Windows Mobile 6.1. В частности, я пытаюсь портировать через OpenCV framework . Успешно (с сомнением) скомпилировав OpenCV для архитектуры ARM4I, я опробую его в простом приложении в стиле world hello.
Из моего WinCE .EXE я вызываю функцию, хранящуюся в OpenCV .DLL (cxcore200.dll). Простой вызов выглядит следующим образом.
IplImage *src = cvCreateImage(cvSize(320,240), 8, 1);
Основные проблемы возникают, когда я вступаю в cvCreateImage. Подпись метода:
IplImage * cvCreateImage( CvSize size, int depth, int channels ){ ... }
Поэтому, когда я вступаю в эту функцию, параметры глубины и размера равны 320 и 240 соответственно (а не 8 и 1, как ожидалось).
Для справки, CvSize объявлен как:
typedef struct
{
int width;
int height;
}
CvSize;
Это явно своего рода повреждение стека вызовов, связанное с тем фактом, что я пересекаю границы, возможно, в неправильно скомпилированную DLL.
Как DLL, так и EXE компилируются и связываются без ошибок.
Кто-нибудь видел что-нибудь подобное? Есть идеи, как это отладить?