Использование библиотек Matlab: libmat.dll и libmx.dll в управляемом проекте C ++

У меня есть проект, написанный на управляемом Visual C ++ (Visual Studio 2010). Поддерживать создание файлов в .мат формат, я использую две библиотеки «libmat.dll» и «libmx.dll» вместе с соответствующими заголовками «mat.h» и «matrix.h». После установки Matlab эти библиотеки находятся в каталоге Matlab (я использую Matlab R2010a).

Пример:

/* content of mat.h */
...
typedef struct MatFile_tag MATFile;
typedef MATFile* (*matOpen)(const char *, const char *);
...

private: System::Void matToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^  e)
{
MATFile *pmat;
mxArray *pa2;
double data[2] = {0.0, 0.4};

matOpen openFunc;

HINSTANCE hLib = LoadLibrary(L"libmat.dll");  // not equal to NULL
if (hLib==NULL)
{
//some action;
}

openFunc =  (matOpen)  GetProcAddress((HMODULE) hLib, "matOpen"); // not equal to NULL
if (openFunc == NULL)
{
FreeLibrary((HMODULE) hLib);
}

HINSTANCE mxLib = LoadLibrary(L"libmx.dll"); // not equal to NULL
if (mxLib==NULL)
{
//some action
}

pmat = openFunc("aaa.mat", "w");
...
}

Проект успешно компилируется, но во время выполнения вызывается openFunc команда вызывает следующую ошибку:

An unhandled exception of type 'System.AccessViolationException' occurred in System.Windows.Forms.dll

Additional information: Attempted to read or write protected memory. This is often an  indication that other memory is corrupt.

Также я создал аналогичный проект для работы с вышеупомянутыми DLL, но для неуправляемого C ++, и он работает правильно. Похоже, проблема существует только с управляемым C ++.

Любой вклад будет оценен.

1

Решение

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

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

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

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