Hi, I’ve knocked up a quick example external and deployed in on Windows – if I now make changes to this and redeploy, the mxe is in use by MAX (as expected) and can’t be overwritten, requiring MAX to be restarted to use the new version… This adds quite a lengthy round trip to the dev process (well, compared to Java and JS) – is there anyway to avoid this, e.g. tell MAX to unload the external do I can overwrite it without having to cycle the env…?
Thus it was in the beginning, is now, and (probably) ever more shall be.
Yes, it’s a pain, but some of use have been living with it for over 20 years.
A workaround some people use is to rename the project target (my-external1, my-external2, etc.) to rebuild and re-instantiate without re-launching Max. You just need to edit your test patch to use the most recent build.
If you’re taking a project you’ve already worked on in Java (or JScript, or (!!!) as a Max patcher) and you’re re-implementing it in C for efficiency or other reasons… the build/test/edit cycle should actually be quite brief, so that restarting Max isn’t that much of an issue.
And, as always, the other possibility is to not write buggy code. This may sound flippant, but coming from the days when it took longer to build code than take a coffee/cigarette break, I have learned that you can save a lot of time by taking more care while coding. Don’t knock it. I’ve written externals that were like BIC pens: worked first time, every time.