代码之家  ›  专栏  ›  技术社区  ›  user36800

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

  •  2
  • user36800  · 技术社区  · 6 年前

    mcc 许可证,因此编译将在我的家庭组织的网络上完成。

    目标环境最终将拥有两个Matlab许可证 MCR,以及编译的可执行文件使用的要求 MCR而不是Matlab许可证 .

    电动机控制中心 电动机控制中心 -Y license.lic ,不清楚如何使用。

    至于客户,我面临的另一个限制是我不想用反复试验来纠缠他们(这不是他们的工作)。这是复杂的事实,也没有有效的方式传达电子内容给他们,所以快速,反复试验和错误是出来的。同样,他们的目标环境,与Matlab许可证,还不存在,虽然到达的过程是在工程中。这是一个鸡和蛋的问题,他们是基于假设我们可以找到解决方案的挑战的MATLAB,但很难通过事先调查的解决方案时,目标环境还不存在的假设。

    在我所在组织的系统中,我还面临着没有安装MCR的权限的限制。因此,我不能尝试和错误地识别一个咒语或配方,忽略了Matlab许可证的存在,并强制使用MCR。并不是说我有时间这么做,因为这是实现这一目标的一种非常低效的方法。

    2 回复  |  直到 6 年前
        1
  •  0
  •   mhopeng    6 年前

    我正在使用Matlab2015B为OSX/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
    
        2
  •  0
  •   user36800    6 年前

    TMW的回应:

    运行使用MATLAB编译器构建的独立应用程序不会检查任何许可证,无论是针对已安装的MATLAB编译器运行时运行还是作为MATLAB编译器安装的一部分安装的运行时运行。请注意,未安装MATLAB编译器而安装MATLAB的最终用户的安装中不会包含编译器运行库。

    如果您安装了MATLAB编译器工具箱,MATLAB将有一个“运行时”文件夹,其中包含执行独立应用程序所需的DLL。如果没有MATLAB编译器工具箱,这些DLL将不可用。相反,用户必须安装MCR才能运行独立应用程序…如果用户没有安装MATLAB编译器工具箱并且希望运行独立应用程序,则不能放弃安装MCR。