0

我想在我的 c++ 程序中运行一个 matlab 代码并等待 Matlab 的结果,然后继续我的 c++ 代码。问题是程序不等待 matlab 并继续运行。我应该在我的代码中添加任何内容吗?

实际上我尝试创建进程并使用 WaitForSingleObject。

int main()
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );


    system("matlab.exe -nosplash -nodesktop -nodisplay -r run('Main')");

    WaitForSingleObject( pi.hProcess, INFINITE );

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );

.
.
.
}
4

1 回答 1

0

您可能需要使用该选项

-batch

到 matlab 而不是选项

-r

例如。有关更多详细信息,请参阅此页面:https ://www.mathworks.com/help/matlab/ref/matlabwindows.html


此外,该std::system调用是“独立的” - 但是您应该检查启动的进程的返回。

int ret = std::system("....");
if (ret != 0) {
  std::terminate();//somethings not right...
}
于 2019-08-01T11:43:08.617 回答