MATLAB Answers


How can I unload an automatically generated .dll file?

Asked by Marcus Arndt on 28 May 2018
Latest activity Answered by Fangjun Jiang
on 23 May 2019
I am using a FMU (generated from Dymola 2018) in a Simulink model. When the model is compiled, a .dll file is created (among others). Now if I want to compile the model again, I receive warning that this file cannot be overwritten. I cannot delete the file manually because the file is in use. Using
version -modules
I can see that the .dll file is loaded in MATLAB, even after closing the model.
After searching the depths of the Internet I have tried several solutions, none of which work, including:
clear all, clear classes, clear mex
As the .dll isn't a .mex file, I cannot use the mislocked or munlock functions. The function
also doesn't work, as the generated .dll does not have an accompanying header.
Deleting the file using the Windows command
delete /f file.dll
doesn't work either, nor does manually unregistering the .dll using
regsvr32 /u file.dll
The only way I can delete the file at the moment is to close MATLAB. Is this a common problem with imported FMU's? Why doesn't MATLAB unload the .dll automatically when the model is closed? Is there a way to force MATLAB to unload the .dll?


Hello I'm having the same problem. Is there anybody who has some suggestion?
I eventually solved the problem by switching to OpenModelica. I must admit, it's not quite as comfortable as Dymola, but it's free and this specific problem doesn't occur.
Word of warning: it did, however, take me a while to calibrate the initial conditions of the model; it seems OpenModelica is not as forgiving as Dymola.
Sorry that I can't provide an answer that actually solves the problem, but I hope I could still help.

Sign in to comment.




1 Answer

Answer by Fangjun Jiang
on 23 May 2019

try "clear functions"?


Sign in to comment.