Заставить скомпилированное приложение Matlab использовать среду выполнения, а не лицензию Matlab - PullRequest
0 голосов
/ 23 июня 2018

У моего клиента есть сеть, которая не имеет доступа к Интернету. Они намерены купить (очень мало) лицензий Matlab только для усилий по развитию меня и моего коллеги. Однако для оперативного использования их сотрудниками мне следует скомпилировать мой код Matlab в файлы * .exe, чтобы операторы не использовали лицензии только для выполнения моего «приложения» / «решения» Matlab (язык, кажется, меняется Эти дни). На самом деле у них не будет mcc лицензий, поэтому компиляция будет производиться в сети моей домашней организации.

Проблема в том, что при запуске скомпилированного исполняемого файла не существует очевидного способа заставить его использовать Matlab Compiler Runtime (MCR). Если в целевой системе есть лицензии Matlab, она также может использовать это. Однако весь смысл компиляции заключается в том, чтобы избежать использования нескольких лицензий в клиентской сети, чтобы при необходимости лицензии были доступны для разработки m-файлов. Таким образом, уникальной особенностью этой ситуации, по-видимому, является то, что целевая среда в конечном итоге будет иметь лицензии Matlab и MCR, а также требование, чтобы скомпилированные исполняемые файлы использовали только MCR а не лицензии Matlab .

Mathworks изучает проблему, но перспективы поиска решения неясны. Я надеюсь, что это не потребует ручной перенастройки сценариев входа в систему для настройки переменных окружения PATH, поскольку они будут прерываться при обновлении сценариев входа в систему. Я надеюсь на решение, подобное прагматическому выражению в m-файле верхнего уровня, или ключ mcc. Однако при просмотре документации mcc ни один из переключателей не представляется вероятным кандидатом, кроме -Y license.lic, и не совсем понятно, как его использовать.

Что касается клиента, еще одно ограничение, с которым я сталкиваюсь, заключается в том, что я не хочу приставать к ним методом проб и ошибок (это не их работа). Это осложняется тем фактом, что не существует эффективного способа передачи им электронного контента, поэтому быстрое итеративное метод проб и ошибок отсутствует. Кроме того, их целевая среда с лицензиями Matlab еще не существует, хотя процесс ее получения еще не завершен. Это проблема курицы с яйцом; они получают Matlab, основываясь на предположении, что мы можем найти решения для этих проблем, но сложно заранее опровергнуть это предположение, исследуя решения, когда целевая среда еще не существует.

В системе моей домашней организации я также сталкиваюсь с ограничением, что у меня нет прав на установку MCR. Следовательно, я не могу предпринять метод проб и ошибок, чтобы идентифицировать заклинание или рецепт, который игнорирует наличие лицензий Matlab и вынуждает использовать MCR. Не то чтобы у меня было время на это, потому что это очень неэффективный способ достижения этой цели.

Из-за множества косвенных проблем метод проб и ошибок не подходит, и я надеюсь, что существует консервативный метод принудительного использования MCR для любых лицензий Matlab, которые могут присутствовать. Я использую R2015b.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

TMW ответ:

Запуск автономного приложения, созданного с помощью компилятора MATLAB, не будет проверять какие-либо лицензии, независимо от того, работает ли он с установленной средой компиляции MATLAB или средой выполнения, установленной как часть установки компилятора MATLAB. Обратите внимание, что конечные пользователи с установленной MATLAB без MATLAB Compiler не будут иметь библиотеки времени выполнения компилятора, включенные в их установку.

Если вы установили MATLAB Compiler Toolbox, в MATLAB будет папка «runtime» с необходимыми DLL для запуска автономного приложения. Без набора инструментов компилятора MATLAB эти библиотеки DLL будут недоступны. Вместо этого пользователь должен установить MCR для запуска автономного приложения ... пользователь не может отказаться от установки MCR, если у него не установлен пакет инструментов компилятора MATLAB и он хочет запустить автономное приложение.

0 голосов
/ 27 ноября 2018

Я работаю с этой точной ситуацией развертывания для OS X / Linux с Matlab 2015b. Когда вы компилируете приложение для ОС на основе Unix, компилятор создает сценарий оболочки, который выполняется при запуске. Мое решение состоит в том, чтобы изменить этот скрипт, чтобы проверить наличие библиотек времени выполнения. Например, в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...