【发布时间】:2018-06-23 20:09:29
【问题描述】:
我的客户的网络无法访问互联网。他们打算购买(很少) Matlab 许可证,只是为了我和我的同事的开发工作。但是,为了他们的员工的操作使用,我应该将我的 Matlab 代码编译为 *.exe 文件,这样操作员就不会仅仅为了执行我的 Matlab“应用程序”/“解决方案”而用尽许可证(语言似乎正在改变这些日子)。他们实际上没有mcc 许可证,因此编译将在我所在组织的网络上完成。
问题在于,当编译的可执行文件运行时,似乎没有一种明显的方法可以强制它使用 Matlab Compiler Runtime (MCR)。如果目标系统上有 Matlab 许可证,它也可以使用它。然而,编译的重点是避免使用客户端网络上的少数许可证,以便在需要时可以将这些许可证用于 m 文件开发工作。所以这种情况的独特之处似乎是目标环境最终将同时拥有Matlab许可和 MCR,以及编译的可执行文件只使用的要求MCR 而不是 Matlab 许可证。
Mathworks 正在研究这个问题,但找到解决方案的前景尚不明朗。我希望它不会涉及手动重新调整登录脚本来自定义环境 PATH 变量,因为每当更新登录脚本时它都会中断。我希望有一个解决方案,例如顶级 m 文件中的类似 pragma 的语句,或 mcc 开关。然而,在阅读mcc 文档时,除了-Y license.lic 之外,没有任何开关显示为可能的候选者,并且不清楚如何使用它。
关于客户,我面临的另一个限制是我不想用反复试验来纠缠他们(这不是他们的工作)。由于也没有有效的方式向他们传达电子内容,所以这使得情况变得复杂,因此快速、反复的试错已经不复存在。同样,他们的具有 Matlab 许可证的目标环境还不存在,尽管实现目标的过程正在进行中。这有点像先有鸡还是先有蛋的问题。他们基于我们可以找到挑战解决方案的假设来获取 Matlab,但是当目标环境尚不存在时,很难通过调查解决方案来预先取消假设。
在我所在组织的系统上,我也面临着我无权安装 MCR 的限制。因此,我无法通过反复试验来识别忽略 Matlab 许可证存在并强制使用 MCR 的咒语或配方。并不是说我有时间这样做,因为这是实现这一目标的一种非常低效的方式。
由于存在许多环境挑战,试错法不是可行的方法,我希望有一种固定方法可以强制使用 MCR,而不是可能存在的任何 Matlab 许可证。我正在使用 R2015b。
【问题讨论】:
-
不应该涉及任何“强制”,在使用您的可执行文件的客户端计算机上安装 MCR 就足够了。我无法从你的描述中理解——你连那个都做不到吗?
-
我刚刚启动了将可执行文件传输到客户端的通信。迄今为止的本地测试包括在没有 Matlab 的独立设备上成功运行可执行文件。最终的目标环境将安装 MCR 并访问 Matlab 许可证。在孤立的每一个条件下,我知道可执行文件将运行。我想通过一种方法确保可执行文件将使用 MCR 而不是 Matlab 许可证来消除不确定性。我寻求一个固定的解决方案,因为我目前无法复制该环境来尝试潜在的解决方案。
-
哪些操作系统用于编译和部署?
-
发帖时客户端系统是Windows 7,但它可能很快就会变成Windows 10。我对客户网络没有清晰和持续的可见性。 TMW 最终回来澄清了编译的可执行文件如何选择是依赖于 Matlab 许可证还是 MCR。我已经发布了详细信息作为这个问题的答案。
标签: matlab-deployment matlab-compiler