C++ amp 使用C++;放大器

C++ amp 使用C++;放大器,c++-amp,C++ Amp,环境:Visual Studio 2017,Windows 10版本。1709编译模式:release 当我打电话时: accelerator_view acc_view = accelerator().default_view; 引发了一个异常(请参见下面的图链接),但代码随后执行良好。 但当可执行进程退出时,我调用: ::GetExitCodeProcess(hChildProcess, &retVal); 从调用方进程,它不返回0,而是在retVal中返回一个垃圾值。 挖掘源代

环境:Visual Studio 2017,Windows 10版本。1709编译模式:release

当我打电话时:

accelerator_view acc_view = accelerator().default_view;
引发了一个异常(请参见下面的图链接),但代码随后执行良好。 但当可执行进程退出时,我调用:

::GetExitCodeProcess(hChildProcess, &retVal);
从调用方进程,它不返回0,而是在retVal中返回一个垃圾值。 挖掘源代码时,问题似乎出在下面被剪掉的代码中(SchedulerBase.cpp,第149行)

我认为我无法修复它,因为上面的代码在MFC中。使用Visual Studio 2013进行编译时,同样的代码也能很好地工作。请参阅堆栈的附图,其中显示了调用时引发的异常(并在内部捕获)

 accelerator_view acc_view = accelerator().default_view;
问题:如何在退出之前清理AMP,以及在调用GetExitCodeProcess()时如何获得正确的结果

图为: 解决了!如果你加上

concurrency::amp_uninitialize();
使用AMP框架后,当调用方进程调用

::GetExitCodeProcess(hChildProcess, &retVal);
retVal
参数填写正确

::GetExitCodeProcess(hChildProcess, &retVal);