我正在开发一个SFunction并在Simulink中编译子模型,这是一个调用使用Realtime Workshop编译的DLL的SFunction。问题是,一旦我编译了子模型一次,通过SFunction在本机Simulink中执行它,模型就完成了,MATLAB仍然保留了子模型DLL的句柄。在重新启动MATLAB之前,我无法重新编译DLL,从而强制释放DLL。
我甚至走得太远,看看ProcessExplorer是否可以强制关闭句柄,但它不能。
答案 0 :(得分:2)
我认为如果你只是将实际的DLL
重命名为其他内容然后重新编译它会起作用。我知道它适用于mex
个文件。如果这不起作用,您可以尝试此solution。
答案 1 :(得分:2)
如何将S-Function绑定到DLL?如果您在链接时绑定,那么您可以尝试bind at runtime并在mdlTerminate
中明确释放句柄。这样,MATLAB甚至不应该知道您访问了DLL。当然,这使得与S-Function内的DLL的实际交互有点混乱。