如何在不重新启动MATLAB的情况下重新编译模型DLL?

时间:2013-12-18 15:17:38

标签: matlab simulink

我正在开发一个SFunction并在Simulink中编译子模型,这是一个调用使用Realtime Workshop编译的DLL的SFunction。问题是,一旦我编译了子模型一次,通过SFunction在本机Simulink中执行它,模型就完成了,MATLAB仍然保留了子模型DLL的句柄。在重新启动MATLAB之前,我无法重新编译DLL,从而强制释放DLL。

我甚至走得太远,看看ProcessExplorer是否可以强制关闭句柄,但它不能。

2 个答案:

答案 0 :(得分:2)

我认为如果你只是将实际的DLL重命名为其他内容然后重新编译它会起作用。我知道它适用于mex个文件。如果这不起作用,您可以尝试此solution

答案 1 :(得分:2)

如何将S-Function绑定到DLL?如果您在链接时绑定,那么您可以尝试bind at runtime并在mdlTerminate中明确释放句柄。这样,MATLAB甚至不应该知道您访问了DLL。当然,这使得与S-Function内的DLL的实际交互有点混乱。