_sda 0 6 сентября, 2022 Опубликовано 6 сентября, 2022 · Жалоба Есть файл скрипта probe.m, мне нужно этот скрипт скомпилировать в исполняемый файл. Выполняю следующую команду: mcc -m probe.m Файл создаётся, запускается и выполняет свои функции. Но только на моём компьютере, у меня установлен матлаб, видимо он обращается к его библиотекам. Ещё пробовал ключ -е, но тогда файл не запускается. На других компьютерах без установленного матлаба файл при запуске моментально закрывается не выдавая никаких ошибок. Можно ли как-то указать компилятору чтобы все нужные библиотеки упаковывались в исполняемый файл? В списке ключей такого не нашёл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 6 сентября, 2022 Опубликовано 6 сентября, 2022 (изменено) · Жалоба в справке матлаба, в разделе MATLAB Compiler описаны способы создания исполняемого файла и при использовании функции mcc результат "does not include MATLAB Runtime or an installer" при использовании Application Compiler (можно вызвать командой applicationCompiler или deploytool) визард предложит варианты установки MATLAB Runtime нужные библиотеки в исполняемый файл упаковываться не будут, но после установки MATLAB Runtime на компьютер без самого матлаба, ваши приложения будут запускаться и работать используя библиотеки из MATLAB Runtime после установки MATLAB Runtime нужной версии на компьютере пользователя, можно будет генерить это и другие приложения функцией mcc на Вашем компьютере, уже без лишних установок и не упаковывая библиотеки в исполняемый файл Изменено 6 сентября, 2022 пользователем stealthisname Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 7 сентября, 2022 Опубликовано 7 сентября, 2022 · Жалоба Большое спасибо за подробный ответ! Буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 28 апреля, 2023 Опубликовано 28 апреля, 2023 · Жалоба Чтобы не плодить темы продолжу здесь. Опять пришлось вернуться к этой задаче, всё получилось но есть два непонятных момента. 1). С помощью функции uigetfile() я загружаю данные из файла. name_file = uigetfile({'*.bin;*.dat'},'Select a file with data...'); idat = read_bin_file(name_file,nsymbol); В матлабе для выбора файла всегда открывается текущая папка с m-файлом, так и хотелось. А в созданном приложении на другом компьютере (ноутбук) открывается то рабочий стол, то корень диска С. Можно ли чтобы в приложении для выбора файла всегда открывалась папка с файлом приложения? 2). Если приложение запустить с рабочего стола ярлыком, то после выбора файла он не загружается, раздаётся звуковой сигнал. Если же приложение запустить из пакетного файла то тогда при загрузке проблем нет. Это как то решается? Или лучше просто для пользователя сделать ярлык для батника и не заморачиваться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 28 апреля, 2023 Опубликовано 28 апреля, 2023 · Жалоба 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); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 29 апреля, 2023 Опубликовано 29 апреля, 2023 · Жалоба Большое вам спасибо! Пободаюсь ещё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться