Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/466: Рейтинг темы: голосов - 466, средняя оценка - 4.61
lomt
449 / 275 / 13
Регистрация: 13.11.2012
Сообщений: 589
Записей в блоге: 1
1

Создание exe файла в MatLab

01.07.2013, 15:28. Просмотров 85949. Ответов 140
Метки нет (Все метки)

Много раз народ спрашивал, как сделать exe файл в MatLab и возможно ли запустить свою программу, не используя сам MatLab. Привожу простенький метод создания экзешников.

Для теста я взял программу подсчёта полож/отриц/нулей среди задаваемых чисел с простейшим интерфейсом.
Создание exe файла в MatLab
)
Оформляем наш код как функцию и запускаем deploytool, во всплывающем окне выбираем стандартное приложение Windows и вводим название нашего проекта.
Создание exe файла в MatLab

Открывается наш проект. Здесь в поле main мы располагаем наш главный файл(функцию). В поле
вспомогательных файлов помещаются файлы с данными, к которым обращается программа, GUI файлы, функции, к которым в течение работы обращается главная программа или функции, не находящиеся в нужной директории, а также коды на C/C++, которые вы хотите скомпилировать и использовать в дальнейшем в вашем приложении. В нашем случаи есть только исполняющий файл-функция, поэтому это поле остаётся пустым.
Создание exe файла в MatLab

В разделе Package к стандартным создаваемым файлам добавляем установку MCR (MATLAB Component Runtime). Это полный набор dll-библиотек для поддержки работы языка MatLab. Для этого жмём на Add MCR и выбираем встраивание библиотек в пакет.
Создание exe файла в MatLab

Теперь создаём наш составленный проект, нажимая на кнопку Build, а потом создаем пакет вспомогательных файлов, нажимая на кнопку Package. После этого в исходной папке появится файл с разрешением .prj и установочный экзешник для библиотек.
Создание exe файла в MatLab

Запускаем экзешник и после разархивирования устанавливаем MCR.
Создание exe файла в MatLab

Теперь наш экзешник окончательно готов. Для теста закрываем MatLab и запускаем программу.
Создание exe файла в MatLab

Как видно, всё прекрасно работает. Добавлю, что созданный нами exe можно запускать и на компьютерах, где не установлен сам MatLab. Для этого требуется лишь установить MCR перед запуском программы. (установочный файл находится в папке проекта).
Код файл-функции:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function  Proga
clear all;close all;
name_peremennie={'Переменная 1:','Переменная 2:','Переменная 3:','Переменная 4:'};
peremennie_initial={'0','0','0','0'};
options.Resize='on';
options.WindowStyle='normal';
options.Interpreter='none';
Peremennie=inputdlg(name_peremennie,'Ввод переменных',1,peremennie_initial,options);
Pos_num=0;
Neg_num=0;
Zero_num=0;
for i=1:length(Peremennie)
    A(i)=str2num(Peremennie{i});
    if A(i)==0
        Zero_num=Zero_num+1;
    else
        if A(i)>0
          Pos_num=Pos_num+1;
        else
           Neg_num=Neg_num+1;
        end
    end
end
Answer1=cat(2,'Количество положительных переменных равно ',num2str(Pos_num));
Answer2=cat(2,'Количество отрицательный ',num2str(Neg_num));
Answer3=cat(2,'Количество нулей ',num2str(Zero_num));
msgbox({Answer1,Answer2,Answer3},'Ответ');
end
11
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 15:28
Ответы с готовыми решениями:

Matlab gui открытие exe файла в программе
Такая роблема, когда откраваешь в .m файле то он запускает эти exe, но когда...

Создание exe файла
Подскажите,пожалуйста,как мне из созданного в Guide приложения создать ехе?...

Создание exe файла
Здравствуйте! Прочитал тему "Создание exe файла в MatLab", решил попробовать....

Создание exe-файла из GUI (GUIDE) приложения
В архиве форума не нашел ответ на вопрос о принципиальной возможности решения...

Exe файл matlab
Добрый вечер. На 32 разрядной системе (WinXP) стоит Matlab R2011b и студия...

140
Geophisic
39 / 25 / 6
Регистрация: 16.02.2011
Сообщений: 134
05.08.2014, 01:24 121
tvoretsmira, с лицензией норм:
>> license('test', 'Compiler')
ans =
1

mbuild -setup, mex -setup запускал (предварительно установив (SDK) 7.1)

но ошибка все равно выскакивает (пробовал на 2013a и 2013b) - думаю может в win8 дело..
как попробую 2014а отпишусь.
0
Зосима
05.08.2014, 09:39
  #122

Не по теме:

Цитата Сообщение от tvoretsmira Посмотреть сообщение
Скорее всего проблема с лицензией.
Но мы же тут все законопослушные граждане и используем исключительно лицензионные продукты! ;)

0
Geophisic
39 / 25 / 6
Регистрация: 16.02.2011
Сообщений: 134
05.08.2014, 12:27 123
В 2014a всё получилось!
tvoretsmira, спасибо за наводку
0
nic2009nik
1 / 1 / 0
Регистрация: 21.10.2012
Сообщений: 34
04.01.2015, 12:45 124
При добавлении MCR возникает ошибка, подскажите, что не так?
ошибка
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid unit name 'fill'. Must be one of: px, dlu, pt, mm, cm, in
at com.jgoodies.forms.layout.ConstantSize$Unit.valueOf(ConstantSize.java:430)
at com.jgoodies.forms.layout.ConstantSize.valueOf(ConstantSize.java:154)
at com.jgoodies.forms.layout.FormSpec.parseAtomicSize(FormSpec.java:413)
at com.jgoodies.forms.layout.FormSpec.parseSize(FormSpec.java:309)
at com.jgoodies.forms.layout.FormSpec.parseAndInitValues(FormSpec.java:286)
at com.jgoodies.forms.layout.FormSpec.<init>(FormSpec.java:181)
at com.jgoodies.forms.layout.ColumnSpec.<init>(ColumnSpec.java:161)
at com.jgoodies.forms.layout.ColumnSpec.decodeExpanded(ColumnSpec.java:240)
at com.jgoodies.forms.layout.FormSpecParser.parseColumnSpecs(FormSpecParser.java:130)
at com.jgoodies.forms.layout.FormSpecParser.parseColumnSpecs(FormSpecParser.java:106)
at com.jgoodies.forms.layout.ColumnSpec.decodeSpecs(ColumnSpec.java:280)
at com.jgoodies.forms.layout.FormLayout.<init>(FormLayout.java:402)
at com.jgoodies.forms.layout.FormLayout.<init>(FormLayout.java:359)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog$4.run(ReferenceOptionDialog.java:329)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog.createPreferenceLinkPanel(ReferenceOptionDialog.java:346)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog.access$1000(ReferenceOptionDialog.java:65)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog$DialogPanel.<init>(ReferenceOptionDialog.java:197)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog.<init>(ReferenceOptionDialog.java:139)
at com.mathworks.mde.deploytool.filesetui.ReferenceOptionDialog.show(ReferenceOptionDialog.java:102)
at com.mathworks.mde.deploytool.filesetui.FileSetLinkUtils$4.run(FileSetLinkUtils.java:166)
at com.mathworks.mde.deploytool.filesetui.FileSetLinkUtils$6.processHyperlink(FileSetLinkUtils.java:195)
at com.mathworks.widgets.HyperlinkTextLabel.processHyperlink(HyperlinkTextLabel.java:240)
at com.mathworks.widgets.HyperlinkTextLabel.access$100(HyperlinkTextLabel.java:78)
at com.mathworks.widgets.HyperlinkTextLabel$2.hyperlinkUpdate(HyperlinkTextLabel.java:185)
at javax.swing.JEditorPane.fireHyperlinkUpdate(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.activateLink(Unknown Source)
at javax.swing.text.html.HTMLEditorKit$LinkController.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at com.mathworks.mwswing.MJEditorPane.processMouseEvent(MJEditorPane.java:158)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
0
DmStrelok
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 2
08.04.2015, 17:39 125
Здравствуйте!
Создавал exe и не получилось.

Выдает сообщение на этапе Package:
Creating binaries... Error during packaging. Open log file.

У меня стоит:
Win 8 32bit (8.3.0.532)
Matlab r2014a

>> mex -setup
MEX configured to use 'lcc-win32' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab...4-bit-api.html.
To choose a different language, select one from the following:
mex -setup C++
mex -setup FORTRAN
>> license('test', 'Compiler')
ans =
1
>> mbuild -setup
Error using mbuild (line 164)
Unable to complete successfully.
No supported compiler or SDK was found. For options, visit http://www.mathworks.com/support/compilers/R2014a/win32.

Подскажите, пожалуйста, в чем может быть проблема и как ее исправить?
0
AlexRPhys
0 / 0 / 0
Регистрация: 15.07.2013
Сообщений: 7
09.04.2015, 12:26 126
Связано все с 32 битной архитектурой ПК. На сколько я знаю R2014b корректно работает только на 64 битных машинах. В результате происходит несовместимость адресов обращения Matlab R2014b к памяти ПК.
Совет: используйте R2013b, он корректно работает с Windows 7 32 бит, и с Windows 8.
0
Алексей Сычев
0 / 0 / 1
Регистрация: 06.05.2014
Сообщений: 16
18.04.2015, 11:30 127
Проблема с меню Package. Пишет ошибку и в logfile ссылается на mcc. Пытался исправить, выставив в
"Preferences -> MATLAB Compiler -> MCR Installer Options -> Installer Location"
адрес, куда установил MCR:
D:\Program Files\MATLAB\MATLAB Compiler Runtime\v82\toolbox\compiler\win64\setup.exe
Пишет всё ту же ошибку.
Что я делаю не так и как это исправить?
P. S. Использую версию 8.2 (R2013b).
0
Миниатюры
Создание exe файла в MatLab   Создание exe файла в MatLab  
Алексей Сычев
0 / 0 / 1
Регистрация: 06.05.2014
Сообщений: 16
20.04.2015, 06:52 128
Да, вот, кстати, выше поего комментария обсуждалась эта проблема, но чёткого решения я там не увидел. Геофизик исправил всё установкой 2014а, но ДмСтрелок с его 2014а наткнулся на ту же проблему.
Я к чему клоню-то, мне что делать? У меня 2013b, а проблема, я думаю в неправильном пути к компилятору, указанном в Preferences. Но что там указывать или как ещё исправить ошибку?
SOS

Добавлено через 7 часов 16 минут
В общем, я понял, в чём была проблема. Нужно устанавливать среду оттуда, где указано, что в данной сборке работает Compiler. Независимо от версий в моём 2013b он не работал, а вот с нормальным торрентом 2014а (не стану рекламировать), где автор отдельно указывает работающий компилятор, всё получилось.
0
GVerdi
30 / 30 / 1
Регистрация: 14.04.2013
Сообщений: 63
22.05.2015, 19:26 129
Ребята, help!

Спасибо за полезную ветку, благодаря ей получилось создать рабочий exe под 64битную винду. Но у меня никак не получается создать exe под 32битную систему!!!!

32битный exe делаю на 32битной версии матлаба (R2013b). На этапе Package выдаётся ошибка "Error during packaging"

Кто-нибудь сталкивался с проблемой, что делать?
0
Алексей Сычев
0 / 0 / 1
Регистрация: 06.05.2014
Сообщений: 16
25.05.2015, 05:45 130
Цитата Сообщение от GVerdi Посмотреть сообщение
"Error during packaging"
Перечитайте моё сообщение выше. Может, дело всё-таки не в битности матлаба, а в качестве вашей сборки?
Ищите ту, что с рабочим компилером, что должно быть специально указано на сайте загрузки.
0
GVerdi
30 / 30 / 1
Регистрация: 14.04.2013
Сообщений: 63
25.05.2015, 10:59 131
В R2014 на 64битной машине создается exe файл, соответственно под x64. Устанавливал матлаб этой же сборки на 32битную машину - не работает - такая же ошибка: "Error during packaging"

Добавлено через 8 минут
Цитата Сообщение от Алексей Сычев Посмотреть сообщение
с нормальным торрентом 2014а (не стану рекламировать)
Не знаю с нормального торрента я скачал или нет... Алексей, скиньте, пожалуйста, в личку ссылку на нормальный торрент
0
castrocat
1 / 1 / 0
Регистрация: 21.04.2015
Сообщений: 28
28.05.2015, 16:46 132
Подскажите. Есть м файл работающий с м функцией. оба запускаются в fig файле gui. При создании exeшника в deploytool выбираю главный m файл и в второстепенных fig и функцию. В итоге в exeшнике часть за которую отвечает функция не работает.
0
matlab2015
0 / 0 / 0
Регистрация: 16.06.2015
Сообщений: 1
16.06.2015, 18:50 133
Подскажите в чем дело. Какую функцию не перекомпилирую в exe, всегда одна и та же ошибка.

Undefined function or variable 'f'.

MATLAB:UndefinedFunction
Error writing to output stream.
0
NurekeMat
0 / 0 / 0
Регистрация: 23.06.2015
Сообщений: 1
23.06.2015, 12:33 134
Знакомство со средой Matlab

Задание 1. Ввести векторы, выполнить операции сложения и вычитания векто-ров. Применить функций обработки данных к векторам.

Вектор а Вектор b
(1,-2,-3) (5,-7, 3)

Добавлено через 1 минуту
Ребята помогите плиз решить

Задание 3. Выполнить поэлементные операции над векторами.
Вектор а Вектор b
(1,-2,-3) (5,-7, 3)

Задание 4. Даны три вектора а, b, с. Найти координаты век¬торов 2а + 3b - с, 16а + 5b - 9с.


Вектор а Вектор b Вектор с
(1,-2,-3) (5,-7, 3) (1, 0, 3)

Задание 5. Найти скалярное произведение векторов а и b.


Вектор а Вектор b
(1, -1) (-2, 4)

Задание 6. Найти угол между векторами а и b, заданными своими координа¬тами.


Координаты вектора а Координаты вектора b
(1, -1) (-2, 4)

Задание 7. Найти расстояние между точками A и B, заданными своими коор¬динатами.

Координаты точки А Координаты точки В
(1, -1) (-2, 4)
0
Алексей Сычев
0 / 0 / 1
Регистрация: 06.05.2014
Сообщений: 16
15.07.2015, 01:40 135
Цитата Сообщение от GVerdi Посмотреть сообщение
Алексей, скиньте, пожалуйста
Прошу прощения, я сюда захожу очень и очень редко.
Честно говоря, я не знаю, как сборка, установленная у меня, будет компилировать под Win_x32. У меня х64, и мои эксперименты с матлабом ограничились всякими мелочами. А по сути: я того торрента уже не помню, смотрите в комментариях на трекере и в описании самого торрента, есть ли в сборке компилятор.

Добавлено через 32 минуты
Цитата Сообщение от GVerdi Посмотреть сообщение
Устанавливал матлаб этой же сборки на 32битную машину - не работает - такая же ошибка: "Error during packaging"
Кстати, вот ещё, если что:
Цитата Сообщение от AlexRPhys Посмотреть сообщение
Связано все с 32 битной архитектурой ПК. На сколько я знаю R2014b корректно работает только на 64 битных машинах. В результате происходит несовместимость адресов обращения Matlab R2014b к памяти ПК.
Совет: используйте R2013b, он корректно работает с Windows 7 32 бит, и с Windows 8.
0
Negoro
0 / 0 / 0
Регистрация: 27.06.2013
Сообщений: 30
13.10.2015, 14:36 136
Хорошая тема, спасибо участникам. а у меня вот какая идея - реализовать визуализацию данных на графиках в отдельном софте. Данные предполагается выцеплять из интернет и как-то вставлять в программу. Вопрос - удобно ли для такой задачи исспользовать инструментарий МатЛАБ? Собственно, что нужно - просматривать (и желательно количественно знать) изменения величины переданных параметров (ну например курса валют к рублю). Спасибо.
0
alucardische
0 / 0 / 0
Регистрация: 24.11.2015
Сообщений: 1
24.11.2015, 21:52 137
Алексей Сычев, а можно тоже [удалено]?
0
hristofernando
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 181
26.11.2015, 21:33 138
для создания независимых приложений, пишут они, -пользуйтесь только функциями что указано на этой странице. Пользуюсь matlab coder 3.0 - вывод: - намнооооого быстрее кодить сразу на С или С++ хотя бы потому что примеров больше(некоторые функции из той страницы не генерируются).
0
v1ady
0 / 0 / 0
Регистрация: 16.04.2016
Сообщений: 1
30.04.2016, 14:40 139
Не знаю, актуальна ли проблема.. Если актуальна, то попробуйте прописать путь к matlab в командной строке, используя переменную path.
P.S. Когда программа установлена не в c:\program files, необходимо выполнять это действие. В противном случае система, так сказать, не знает путь к исполняемому файлу программы.

Добавлено через 11 минут
"Приложению не удалось запуститься, поскольку mclmrrt710.dll не был найден"
0
Geophisic
39 / 25 / 6
Регистрация: 16.02.2011
Сообщений: 134
07.06.2016, 09:59 140
Всплыла проблема с работоспособностью exe-файлов.

Разработку программы делаю в Win8x64 в Matlab_R2015bх64
Скомпилированный exe файл прекрасно работает на компьютерах под Win7х64 и Win8х64,
но при попытке запуска на компьютере с Win10х64 появляется ошибка:
НЕВОЗМОЖНО ЗАПУСТИТЬ ЭТО ПРИЛОЖЕНИЕ НА ВАШЕМ ПК.

Как я понял, начиная с версии Matlab_R2015b начинается поддержка Win10.
Правильно ли я понимаю, что скомпилированный exe-файл (напомню, компилирую в Win8х64)
должен по идее работать на компьютере с Win10х64? Может я уже на этом этапе ошибаюсь
и не нужно ожидать что программа будет работать под Win10х64?

Если кто-то сталкивался, помогите пожалуйста в каком направлении копать.
0
07.06.2016, 09:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 09:59

Открытие файла Matlab 7.14 в Matlab 7.12
доброго всем вечера.такая вот проблемка.создал файл в матлабе,но в версии 7.14...

Открытие файлов .exe в matlab
можно ли открыть файл ехе в матлабе так, чтобы он показал код этой программы на...

Matlab-ский exe-шник не запускается
Всем привет! Просили с учёбой помочь и принесли программу сделанную в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru