Исключение MATLAB API для C с использованием matGetDir: matrix :: serialize :: EndOfFile в ячейке памяти - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь прочитать файл mat в проекте c ++ Visual Studio 2017 для Windows 7. Я использую MATLAB API для C из Matlab R2017b.

Я могу запустить пример matdgns.c в Matlab, используя mex.

Также возможно запустить приложение в моем проекте c ++ и открыть файл mat, используя

pmat = matOpen(file, "r");

Однако, когда я пытаюсь прочитать список массивов, используя matGetDir

dir = (const char **)matGetDir(pmat, &ndir);

Я получаю исключение:

Исключение, сгенерированное в 0x000007FEFCF4A06D в project_gTest.exe: Microsoft C ++ исключение: matrix :: serialize :: EndOfFile в памяти местоположение 0x000000000031F1D0.

Как я могу решить эту проблему? Я скучаю по другой библиотеке?

Спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

Я получил следующий ответ от поддержки Matlab, который «решает» «проблему»:

Я полагаю, что это Исключение, которое вы "получаете", - это просто строка текста, отображаемая в окне "Вывод" Microsoft Visual Studio 2017, верно? И это на самом деле не сбой вашего приложения, правильно?

Если это действительно так, обратите внимание, что MSVS 2017 действительно показывает исключений первого шанса в «Выходных данных». Если такое исключение перехватывается и обрабатывается, тогда как в данном конкретном случае я ожидаю, что библиотеки MATLAB справятся с этим, тем не менее, нет реальной проблемы. Вполне допустимо генерировать исключения, а затем обрабатывать их. Только необработанные (второй шанс) исключения могут привести к реальным проблемам.

Обычно должно быть совершенно безопасно игнорировать ту строку, которая показана в выходных данных, и фактически ожидается, что это исключение выдается (и перехватывается внутри) при работе с matGetDir.

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