Compiled application does not run because of startup plugin libmwlmgrimpl.dll

123 次查看(过去 30 天)
I compiled a very simple application (R2017b) but it will not run. When I start it from the DOS prompt, it will return this message: "Fatal Internal Error: std::exception: Bundle#4 start failed: Loading C:\Program Files\MATLAB\R2017b\bin\win64\matlab_startup_plugins\lmgrimpl\libmwlmgrimpl.dll failed with error: The operating system cannot execute %1."
Sometimes it is recommended to reinstall Matlab, which I did, but to no avail. I searched around for any other answers, but I didn't really find anything.
What comes to my mind: Why would a standalone executable with Matlab Runtime installed look for license dlls? In fact, "lmgrimpl" looks like something very license manager related to me, which clearly shouldn't happen on a deployed standalone application?
  2 个评论
Walter Roberson
Walter Roberson 2017-12-17
As I look around and put together hints, I suspect that when a program is compiled, that the license entitlements of the user are copied into the .exe, and then at runtime, the license checks are gone through. There are too many things I could not explain under the hypothesis that the compiler simply does not compile in license checks.
For example, the number of nodes and cores usable under Distributed Computing depends upon the license at compile time: I figure that rather than going through special purpose code to check just that factor, that instead they just use the existing license management routine, passing it the license entitlements that could be fetched at compile time.
Stefan
Stefan 2017-12-18
Sounds like it is the way you put it, but why would the standalone exe look for a license that won't be there anyways on a PC where Matlab is not installed?

请先登录,再进行评论。

回答(1 个)

Ben Drebing
Ben Drebing 2017-12-20
I have found, oddly enough, that this error can happen if you have out-of-date libraries, specifically ssleay32.dll and libeay32.dll, in your Windows System32 directory. If this is the case, you have two options:
  1. Place a copy of MATLAB's SSLEAY32.DLL and LIBEAY32.DLL (from the bin\win64 directory) next to your standalone executable. The directory from which the application loaded has a higher priority than system32, so this should allow the application to use the DLLs which it needs, or
  2. Remove SSLEAY32.DLL and LIBEAY32.DLL from the system32 directory; the standalone can then use the one included with MATLAB. This may break other applications however which rely on the DLL being in system32. So, alternatively you may want to update SSLEAY32.DLL and LIBEAY32.DLL in the system32 directory, for example by replacing it with the copies included with MATLAB or perhaps you could update the application which installed this DLLs in the first place, if you know which application this was.
  4 个评论
Tim Boxall
Tim Boxall 2019-5-3
Hi Ben.
This worked for me - thanks. Do you know why these particular libraries are the problem? How did you work it out?
Thanks,
Tim
Marica dicamillo
Marica dicamillo 2019-10-3
I had the same problem. Updating SSLEAY32.DLL and LIBEAY32.DLL in the system32 directory, my application makes it work. Thank you!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by