Интегрировать код в Visual Studio с помощью MATLAB Coder

Я создал файл dll из файлов Mathlab .m, используя кодер Matlab. В matlab код matlab работает без ошибок, и создание DLL прошло успешно. MV2010 компилируется и работает нормально. Однако, когда программное обеспечение вызывает любую функцию из этой библиотеки DLL в Visual Studio, я получаю «необработанное исключение» с расположением памяти и «место чтения нарушения доступа» с другим расположением памяти.

Я думал, что созданная DLL зависит от другой DLL, которая отсутствует. Итак, я использовал Walker для проверки зависимости. Однако средство обхода зависимостей не показывало отсутствующих зависимостей.

Функции Matlab принимают 5 входных переменных (четыре как двойные и одна как 1D-массив двойных) и возвращают 4 двойных значения. Поэтому я подумал, что размер массива, который я передаю в сгенерированный Matlab код, может быть небольшим. Итак, я изменил размер массива. Оригинальный размер был 750, в то время как новый размер 5000. Все еще получаю то же необработанное исключение.

Есть идеи, как отладить это необработанное исключение? что-нибудь еще мне нужно проверить?

/ * Объявления функций * /

extern void mat3(double ValueF, double DesiredValue, double io, double del, emxArray_real_T *a, double *status, double *slope_deg, double *fval, double *SVal);

и я вызываю этот метод в MS2010, как показано ниже.

 double lValueF = 166.6;
double lDesiredValue = 42.00;
double io = 1.0;
double del = 4.0;

emxArray_real_T *lInputRoi;
// a = emxCreate_real_T(height,width);
lInputRoi = emxCreate_real_T(size_y,size_x);

// Converting 2D image to ID array
if(!isHorz)
{
int lRow = 0;
int lCol = 0;
for (int row=roi.y+odd_y_offset;row< roi.y+size_y;row=row+2)
{
lCol = 0;
for (int col=roi.x;col< roi.x+size_x;col++)
{
lInputRoi->data[lRow *size_x + lCol] = (real_T)img.at<uchar>(row,col);
lCol++;
}
lRow++;
}
}
else
{
int lRow = 0;
int lCol = 0;
for (int col=roi.x+odd_x_offset;col< roi.x+size_x;col=col+2)
{
lRow = 0;
for (int row=roi.y;row< roi.y+size_y;row++)
{
lInputRoi->data[lCol *size_y + lRow] = (real_T)img.at<uchar>(row,col);
lRow++;
}
lCol++;
size_x = roi.height;
size_y = roi.width;
}
}

// initializing matlab generated function
mat3_initialize();

double lStatus = 0;

double lslope_deg = 0.0;
double lfreqval = 0.0;
double lsfrvalue = 0.0;

mat3(lValueF, lDesiredValue, io, del, lInputRoi, &lStatus, &lslope_deg, &lfreqval, &lsfrvalue);

нота:
1) img -> это входные данные изображения.
2) roi -> это объект структурного типа, который имеет две переменные типа int (x и y)
3) Приложение MV2010 — это приложение, которое использует «MFC в общей DLL». 4) Я видел учебное пособие о том, как интегрировать сгенерированную Mathlab библиотеку DLL в Microsoft Visual Studio. Тем не менее, учебник не получает никаких ошибок. http://www.mathworks.com/videos/integrate-code-into-visual-studio-77402.html

Спасибо за любую помощь заранее.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]