Перейти к содержанию
    

Создание исполняемого файла в матлаб

Есть файл скрипта probe.m, мне нужно этот скрипт скомпилировать в исполняемый файл. Выполняю следующую команду:

mcc -m probe.m

Файл создаётся, запускается и выполняет свои функции. Но только на моём компьютере, у меня установлен матлаб, видимо он обращается к его библиотекам.

Ещё пробовал ключ -е, но тогда файл не запускается.

На других компьютерах без установленного матлаба файл при запуске моментально закрывается не выдавая никаких ошибок.

Можно ли как-то указать компилятору чтобы все нужные библиотеки упаковывались в исполняемый файл? В списке ключей такого не нашёл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в справке матлаба, в разделе MATLAB Compiler описаны способы создания исполняемого файла

image.thumb.png.8d638982caec9e1719469b24f3a7a72b.png

и при использовании функции mcc результат "does not include MATLAB Runtime or an installer"

при использовании Application Compiler (можно вызвать командой applicationCompiler или deploytool) визард предложит варианты установки MATLAB Runtime

нужные библиотеки в исполняемый файл упаковываться не будут, но после установки MATLAB Runtime на компьютер без самого матлаба, ваши приложения будут запускаться и работать используя библиотеки из MATLAB Runtime

после установки MATLAB Runtime нужной версии на компьютере пользователя, можно будет генерить это и другие приложения функцией mcc на Вашем компьютере, уже без лишних установок и не упаковывая библиотеки в исполняемый файл

 

Изменено пользователем stealthisname

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо за подробный ответ! Буду пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы не плодить темы продолжу здесь. Опять пришлось вернуться к этой задаче, всё получилось но есть два непонятных момента.

1). С помощью функции uigetfile() я загружаю данные из файла.

	name_file = uigetfile({'*.bin;*.dat'},'Select a file with data...');
	idat = read_bin_file(name_file,nsymbol);

В матлабе для выбора файла всегда открывается текущая папка с m-файлом, так и хотелось. А в созданном приложении на другом компьютере (ноутбук) открывается то рабочий стол, то корень диска С.

Можно ли чтобы в приложении для выбора файла всегда открывалась папка с файлом приложения?

2). Если приложение запустить с рабочего стола ярлыком, то после выбора файла он не загружается, раздаётся звуковой сигнал. Если же приложение запустить из пакетного файла то тогда при загрузке проблем нет.

Это как то решается? Или лучше просто для пользователя сделать ярлык для батника и не заморачиваться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

например такие

currpath = cd
currpath = pwd
[~,currpath] = system('cd')
[~,currpath] = system('pwd')

если каким-то образом удастся получить текущую (рабочую) папку, то вызывать

uigetfile({'*.bin;*.dat'}, 'Select a file with data...', currpath);

2)  так как приложение не правильно определяет рабочую папку и поэтому не правильно работает с относительными путями, указать полный путь до файла

[file, path] = uigetfile({'*.bin;*.dat'}, 'Select a file with data...');
name_file = fullfile(path, file);
idat = read_bin_file(name_file,nsymbol);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...