MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   从服务的环境变量路径加载dll (https://www.labfans.com/bbs/showthread.php?t=22842)

poster 2019-12-10 16:49

从服务的环境变量路径加载dll
 
我们在计算机上安装Matlab Runtime,然后重新启动.net Windows服务,该服务从Matlab Runtime调用方法。
问题在于,在重新启动Windows之前,我们会收到TypeInitializationException错误。我们认为发生这种情况是因为[URL="http://support.microsoft.com/kb/821761"]环境变量直到重新启动后才在服务上更改,[/URL]并且Matlab使用%Path%变量引用其核心DLL。
我的问题是,您认为我可以更改%Path%变量,以便Matlab在为其引擎引用核心dll时使用它吗?
还是可以在.NET的运行时DLL加载机制中添加目录,以便在不重新启动计算机的情况下正确引用那些Matlab核心dll?

这是我们得到的例外

System.TypeInitializationException: The type initializer for 'MatlabCalculation.Calculation' threw an exception. ---> System.TypeInitializationException: The type initializer for 'MathWorks.MATLAB.NET.Utility.MWMCR' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'mclmcrrt710.dll': Kan opgegeven module niet vinden. (Exception from HRESULT: 0x8007007E) at MathWorks.MATLAB.NET.Utility.MWMCR.mclmcrInitialize() at MathWorks.MATLAB.NET.Utility.MWMCR..cctor() --- End of inner exception stack trace --- at MatlabCalculation.Calculation..cctor() --- End of inner exception stack trace --- at MatlabCalculation.Calculation.Finalize() “ Kan opgegeven module niet vinden” =“找不到指定的模块”


回答:
如果可以重写服务,则可以在.NET代码中使用[URL="http://msdn.microsoft.com/en-us/library/system.environment_methods.aspx"]System.Environment[/URL] .GetEnvironmentVariable和SetEnvironmentVariable方法,并自己添加Matlab运行时引擎路径。如果无法重写服务,则可以尝试对服务起作用的[URL="http://technet.microsoft.com/en-us/library/bb490715.aspx"]net stop[/URL] / net start或[URL="http://msdn.microsoft.com/en-us/library/50614e95(VS.80).aspx"]installutil[/URL] 。或者您可以在ServerFault上询问。

[B]老答案,[/B]因为我误解了这个问题:

是MATLAB组件启动后引发异常吗?如果是这样,则[URL="http://www.mathworks.com/support/solutions/en/data/1-ANUH0Q/?solution=1-ANUH0Q"]CTFROOT,TOOLBOXDIR和ADDPATH[/URL]函数可能会有所帮助。也许像:

if isdeployed addpath(ctfroot); addpath(toolboxdir('signal')); %more addpath(toolboxdir('toolboxname')) statements end 但是,如果根本不启动MATLAB,这将无济于事。



[url=https://stackoverflow.com/questions/1623935]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:17

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.