2010-07-07 7 views
4

У меня есть код Matlab и графический интерфейс для него, и я хочу сделать автономный .exe, чтобы он мог использоваться на компьютерах, на которых не установлен Matlab.Создание автономного приложения из кода Matlab

Я знаю о компиляторе Matlab и о том, как его использовать, но создает файл .exe, который работает только в том случае, если у пользователя установлен MCRLAB MackLook.

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

Я знаю, что C может использовать Matlab, есть ли способ использовать код с C? Как насчет альтернатив с открытым исходным кодом Matlab?

В крайнем случае, если бы я переписал код Matlab на другом языке, на каком языке вы бы порекомендовали? Я думал о C или Python.

Спасибо.

+0

Большинство ответов, похоже, устарели. Если у вашей цели нет MATLAB, вы можете использовать MATLAB Compiler с опцией 'include MCR', но файл будет большим. Альтернативой является использование Matlab Coder в качестве @Amro. –

ответ

1

Прошло некоторое время с тех пор, как я посмотрел на компилятор MATLAB, но если я правильно помню, он имел обыкновение генерировать код C/C++, а не собираться и генерировать исполняемый файл. В зависании всегда присутствовали панели инструментов, которые использовал ваш код, и поддерживал ли их компилятор или нет. Есть ли вероятность, что вы можете установить приложение MATLAB на сервер и получить рабочий стол для настольных компьютеров?

Что касается других языков, я бы проверил NumPy and SciPy в сочетании с matplotlib (matplotlib.sf.net). Сейчас я работаю с разработчиком MATLAB, и до сих пор он очень доволен этим опытом.

+0

«Любой шанс, что вы можете установить приложение MATLAB на сервере и иметь настольный клиентский телефон для получения результатов» - это, вероятно, слишком много для моих целей. Мне было просто любопытно, было ли что-то более удобное, чем установка MCR. Большинство людей, которых я знаю, склонны ненавидеть устанавливать что-то просто, чтобы запустить одно небольшое приложение. Спасибо за ваше предложение NumPy и matplotlib. Я буду помнить об этом. – user384918

1

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

Рассмотрите другой язык, только если вы уже знакомы с ними и/или у вас есть достаточно времени для того, что вы пытаетесь выполнить. Кроме того, если вы используете функции в Matlab, которые вы не пишете, вам также придется писать те, которые могут быть очень трудными/невозможными.

Если ни одно из вышеперечисленных проблем не является проблемой, то какой язык вы должны использовать, действительно зависит от вас. Вы не ограничены только C и Python. Matlab, по моему мнению, очень похож на другие общие языки, по крайней мере, с точки зрения синтаксиса. Вам нужно будет учиться в любом случае, поэтому я бы посоветовал вам либо пойти на язык, который вам известен, либо выбрать язык, для которого найти помощь легко. C# и Java - два из более известных языков.

+0

Да, это было просто принятие желаемого за действительное. MCR является бесплатным, так что это не очень важно; просто раздражение для пользователей. Я не честно рассматриваю переписывание кода. Как я уже сказал, это всего лишь последнее средство (и я, вероятно, просто состану предлог, прежде чем прибегать к нему> _>). – user384918

+0

отличный план: D – sbenderli

1

MathWorks недавно представила новый продукт MATLAB Coder. Он способен генерировать код C \ C++ из вашего кода MATLAB (генерирует исходный код, а не исполняемые файлы). Сгенерированный код переносимый и не зависит от MCR, хотя он поддерживает только подмножество основных функций языка MATLAB.

+0

. Можно ли создать файл .exe со всеми функциями matlab (например, графическими и графическими интерфейсами)? – ironzionlion

+1

[MATLAB Coder] (http://www.mathworks.com/products/matlab-coder/) создает исходный код C/C++, это зависит от вас, чтобы скомпилировать его в исполняемые двоичные файлы. Обратите внимание, что он не поддерживает создание кода C/C++ для любых графиков или графических интерфейсов. Поддерживается [подмножество языков] (http://www.mathworks.com/help/coder/ug/matlab-language-features-supported-for-code-generation.html), а также набор [ функции и панели инструментов] (http://www.mathworks.com/help/coder/ug/functions-supported-for-code-generation--alphabetical-list.html) для генерации кода. – Amro

+0

[MATLAB Compiler] (http://www.mathworks.com/products/compiler/) (совсем другой набор инструментов) позволяет развернуть ваш код MATLAB почти так же, как есть (графики, графические интерфейсы и все). Под ним весь ваш код помещается в одну программу, которая интерпретируется и выполняется в [время выполнения MCR] (http://www.mathworks.com/products/compiler/mcr/) (как лишенная версия движка MATLAB), загружаемая бесплатно конечными пользователями – Amro

0

Компилятор Matlab 'не является компилятором. Он преобразует m-код Matlab в код C++, а затем отправляет его фактическому компилятору, подобному тому, который есть в Visual Studio и т. Д. Кодирование, которое он делает, на самом деле не является удобочитаемым человеком.

Чтобы сделать автономное приложение, установить следующие инструментарии (по той цене, которую вы заплатили):

MATLAB Builder JA, MATLAB Builder NE, MATLAB Compiler

Настройка компилятора Matlab, направляя его к фактический компилятор на вашем диске (т. е. mbuild -setup).

Выберите компилятор: [1] Microsoft Visual C++ 2008 SP1 в C: \ Program Files (x86) \ Microsoft Visual Studio 9.0

Затем с помощью (т.е. типа deploytool), чтобы сделать основной и определить различные вспомогательные функции и т. д. Секционные консоли или автономные. Затем нажмите «Создать». Он сделает exe-файл для вас. Вы также можете скомпилировать DLL и т. Д. По мере необходимости.

Новые версии «компилятора» поддержки составления Eval, все наборы инструментов, которые имеют лицензию, и он поддерживает импорт классов ява, что позволит вам использовать например, DOM для XML-файла разбора и т.д.

Чтобы использовать полученный exe-файл на компьютере, на котором не установлен Matlab, вам необходимо получить Matlab MCR и установить его. MCR должен точно соответствовать версии Matlab, которую вы использовали для составления скомпилированного кода.

С уважением,

Иван

2

Модуль MCR требуется, но есть хитрость: он на самом деле не должны быть установлены , только доступный на PATH. Запуск материала MCR не требует каких-либо записей в реестре или что-то еще особенное из процесса установки. Вам просто нужны файлы MCR, доступные для чтения, а библиотеки DLL - локализованы обычным механизмом поиска, который включает проверку PATH во время запуска программы.

Например, я выполнил скомпилированные приложения Matlab с помощью MCR, который «установлен» на сетевом диске. Вы запускаете установщик MCR на одном компьютере и устанавливаете его на сетевой диск X:\Matlab\MCR\R2010b-win32 вместо обычного C:\Program Files. Затем запускайте свою программу через сценарий оболочки, который добавляет X:\Matlab\MCR\R2010b-win32\bin\win32 в PATH, прежде чем вызывать ваш фактический файл .exe, и он будет работать на любом другом компьютере, который видит тот же диск, даже если установщик MCR не был запущен их. (В конце концов мы остановились, потому что загрузка MCR из сети - это удар по производительности.)

Вы можете использовать этот трюк, чтобы связать MCR с вашим приложением. Прикрепите всю установку MCR (дерево, полученное в результате установки, а не сама программа установщика) в подкаталоге дерева каталогов вашего приложения и укажите точку входа в ваше приложение как файл .bat или другой сценарий оболочки, в котором указывается, что MCR dir на PATH перед запуском вашего MCR-зависимого файла .exe.

Конечно, обратитесь к вашим юридическим лицам, чтобы убедиться, что это не нарушает ваши условия лицензирования.