engOpen возвращает Null

У меня проблема, когда я пытаюсь вызвать функцию Matlab из моего кода C++.

Когда я вызываю engOpen, он всегда возвращает NULL. Вот код:

Engine *m_pEngine;
m_pEngine = engOpen(NULL);
if(m_pEngine == NULL)
{
   cout << "Error" << endl;
   exit(1);
}

Кто-нибудь знает, как это решить?

Спасибо!!!

2 ответа

Решение

Если вы посмотрите на engOpen В документации сказано:

В системах Windows engOpen открывает COM-канал для MATLAB. Запускается программное обеспечение MATLAB, которое вы зарегистрировали во время установки. Если вы не зарегистрировались во время установки, в командной строке вы можете ввести команду:

matlab /regserver

Я не уверен, что это ваша проблема, но, похоже, стоит попробовать.

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

Вы должны проверить это, даже если вы зарегистрировали Matlab во время администрирования, если он в настоящее время не зарегистрирован как COM-ссылка, он не будет поддерживать engOpen.

также должен работать engOpen("")

Это еще не все, что нужно сделать, есть определенные моды, которые вы должны иметь в виду для конфигурации IDE (или компоновщик и параметры включения, если вы используете компилятор командной строки).

Вот страница администратора Matlab для решения этих проблем. Помимо проблемы COM-ссылки.

https://www.mathworks.com/matlabcentral/answers/100603-how-can-i-compile-a-matlab-engine-application-using-microsoft-visual-studio-9-0-or-10-0

Другие вопросы по тегам