使用MATLAB Engine应用程序而不将MATLAB添加到PATH

时间:2013-04-05 21:00:18

标签: matlab winapi dll path matlab-engine

我正在研究MATLAB Engine应用程序。为了使它工作,需要将MATLAB添加到PATH环境变量中,以便Engine应用程序可以找到某些DLL(libeng和libmx)。

当MATLAB注册为COM服务器时,它将其位置写入注册表,我可以访问它。使用这些信息,是否有一种简单的方法可以让Engine应用程序工作而无需将MATLAB添加到PATH中?从理论上讲,Engine应用程序可以从注册表中读取这些DLL的位置,但问题是它在没有这些DLL的情况下甚至无法启动(根据MATLAB Engine编译指令以标准方式编译时)。

我对winapi不是很熟悉,也不熟悉COM。

是否有一个简单的解决方案让问题根据注册表中的信息找到它的DLL?

1 个答案:

答案 0 :(得分:2)

我找到了以下解决方案:

如果我们使用delayed DLL loading,那么我们有机会在程序尝试加载DLL之前设置DLL搜索路径。

为此,需要将以下内容添加到链接器选项中:/DELAYLOAD:libmx.dll /DELAYLOAD:libeng.dll并且必须链接到delayimp.lib。执行此操作后,我们可以将SetDllDirectory()的调用添加到libmx.dll和libeng.dll位置的路径到main / WinMain函数的开头。