Я пытаюсь отправить простые строковые команды в движок Matlab.
Это мой код (в моем коде больше нет кода, связанного с API Matlab, кроме строки #include "engine.h"
):
void MatlabPlotter::DrawInMatlab() const
{
std::string PlotCommand = "x=[0 1 2 3 4 5];y=[0 1 4 9 16 25];plot(x, y);";
void * vpDcom = NULL;
int iReturnValue;
engOpenSingleUse(PlotCommand.c_str(), vpDcom, &iReturnValue);
}
Код компилируется и успешно выполняется без каких-либо ошибок компилятора или сообщений об ошибках во время выполнения. Откроется «Окно команд Matlab»; Я получаю экран, как показано ниже:
Как видите, командное окно пустое. На экране нет графического окна.
Когда я вручную ввожу команду в это окно, я получаю график без ошибок, как показано ниже:
Это официальная страница документации для функции engOpenSingleUse()
:
http://www.mathworks.com/help/techdoc/apiref/engopensingleuse.html
Я добавил библиотеку <MatlabInstallationDir>\extern\lib\win64\microsoft\libeng.lib
в свой проект (я собираю в конфигурации отладки x64).
Я включил <MatlabInstallationDir>\extern\include\engine.h
заголовочный файл.
Я набрал команду !matlab /regserver
в главном окне Matlab (как описано на странице документации функции engOpenSingleUse()
), чтобы убедиться, что движок Matlab зарегистрирован в моей ОС.
Почему ничего не происходит, когда я вызываю функцию engOpenSingleUse()
?
Почему не появляется всплывающее окно, когда я посылаю строковую команду в объекте PlotCommand
для построения графика?
Что я делаю не так?
ОС: Windows 7 Ultimate x64 SP1, последняя версия
IDE: Visual Studio 2010, (версия 10.0.40219.1 SP1Rel)
Matlab: 7,8,0 (R2009a)