首页 文章

强制编译Matlab应用程序以使用运行时而不是Matlab许可证

提问于
浏览
2

我的客户端有一个网络没有用来执行我的Matlab "app" / "solution"(这些语言似乎正在改变这些天) . 他们实际上不会拥有 mcc 许可证,因此编译将在我的家庭组织的网络上完成 .

问题是,当编译的可执行文件运行时,似乎没有一种明显的方法可以强制它使用Matlab编译器运行时(MCR) . 如果目标系统上有Matlab许可证,它也可以使用它 . 但是,编译的全部目的是避免在客户端网络上使用少量许可证,以便在需要时许可证可用于m文件开发工作 . 所以关于这种情况的独特特征似乎是 target environment will eventually have both Matlab licenses and MCR, as well as the requirement that compiled executables use only the MCR rather than the Matlab licenses .

Mathworks正在研究这个问题,但寻找解决方案的前景尚不清楚 . 我希望它赢得't involve manual rejigging login scripts to customize environment PATH variables, as that will break whenever login scripts are updated. I' m希望在顶级m文件或 mcc 开关中像pragma一样的语句的解决方案 . 然而,在仔细阅读 mcc 文档时,除了 -Y license.lic 之外,没有任何开关本身可能是候选者,并且不清楚如何使用它 .

关于客户,我面临的另一个限制是我不想用反复试验纠缠他们(这不是他们的工作) . 由于没有有效的方式将电子内容传达给他们,所以这很复杂,因此快速,迭代的试验和错误就出来了 . 同样,他们的目标环境(使用Matlab许可证)尚不存在,尽管实现目标的过程正在进行中 . 这有点像鸡蛋问题;他们基于我们可以找到挑战解决方案的假设来获得Matlab,但是当目标环境尚不存在时,通过调查解决方案很难预先解决这个问题 .

在我的家庭组织的系统中,我也面临着我无权安装MCR的限制 . 因此,我不能进行反复试验以确定忽略Matlab许可证存在的咒语或配方并强制使用MCR . 并非我有时间这样做,因为这是实现这一目标的一种非常低效的方式 .

由于存在许多间接挑战,因此试错法不是可行的方法,我希望有一种固定方法可以强制使用MCR而不是任何可能存在的Matlab许可证 . 我正在使用R2015b .

2 回答

  • 0

    我正在使用Matlab 2015b处理OS X / Linux的这种确切部署情况 . 编译基于Unix的操作系统的应用程序时,编译器会创建一个在启动时执行的shell脚本 . 我的解决方案是修改此脚本以检查是否存在运行时库 . 例如,在OS X(macOS)上:

    echo "Setting up environment variables"
      if [ -d "/Applications/MATLAB/MATLAB_Compiler_Runtime/v90" ] ; then
        echo "Using MCR v8.6 (R2015b) (_Compiler)"
        MCRROOT=/Applications/MATLAB/MATLAB_Compiler_Runtime/v90
      elif [ -d "/Applications/MATLAB/MATLAB_Runtime/v90" ] ; then
        echo "Using MCR v8.6 (R2015b)"
        MCRROOT=/Applications/MATLAB/MATLAB_Runtime/v90
      elif [ -d "/Applications/MATLAB_R2015b.app" ] ; then
        echo "Using MATLAB R2015b application"
        MCRROOT=/Applications/MATLAB_R2015b.app
      else
        echo "No MATLAB libraries found! Install MCR R2015b from:"
        echo " http://www.mathworks.com/products/compiler/mcr/"
        echo " "
        sleep 10
        exit
      fi
    
  • 0

    TMW的回应:

    运行使用MATLAB Compiler构建的独立应用程序不会检查任何许可证,无论是针对安装的MATLAB编译器运行时运行还是作为MATLAB编译器安装的一部分安装的运行时 . 请注意,安装了没有MATLAB编译器的MATLAB的最终用户将不会在其安装中包含编译器运行时库 . 如果您已经安装了MATLAB编译器工具箱,MATLAB将有一个“运行时”文件夹,其中包含执行独立应用程序所需的DLL . 如果没有MATLAB编译器工具箱,这些DLL将不可用 . 相反,用户必须安装MCR才能运行独立应用程序...如果用户没有安装MATLAB编译器工具箱并且他们希望运行独立应用程序,则用户不能放弃安装MCR .

相关问题