Как я могу скопировать m-файлы в определенную папку в скомпилированном приложении MATLAB?
Я использую компилятор приложений MATLAB R2015a. После выбора моего основного m-файла MATLAB обнаружил некоторые файлы, необходимые для запуска приложения, но после компиляции и запуска моего приложения скомпилированное приложение не может найти некоторые конкретные m-файлы из установленного набора инструментов (стороннего набора инструментов).
Теперь я хочу скопировать все файлы панели инструментов в целевую папку C:\Users\My_Account\AppData\Local\Temp\My_Account\mcrCache8.5\Program_70\DDM
, DDM
моя папка с инструментами, которую MATLAB создает автоматически на основе вложенных файлов, как указано выше. Я хочу добавить другие файлы в эту папку. Как я могу это сделать? и это хорошее решение, чтобы решить эту проблему?
1 ответ
То, что вы пытаетесь сделать, не сработает.
Когда вы компилируете приложение с помощью компилятора MATLAB, оно находит весь код, от которого зависит ваша основная функция, шифрует его и упаковывает в исполняемый файл, который впоследствии будет выполняться в среде выполнения компилятора MATLAB (MCR).
MCR может выполнять только код, который был зашифрован и упакован таким способом - невозможно заставить его выполнить обычный незашифрованный файл MATLAB. Поэтому выгрузка файлов во временную папку, которую MCR использует для распаковки файлов кода, ничего не даст.
Вместо этого попытайтесь выяснить, почему во время анализа зависимостей MATLAB Compiler не находит все файлы, от которых зависит ваша основная функция.
Это может происходить по разным причинам - анализ зависимостей не совершенен. Например, если ваш код звонит eval('myfunction')
, анализ зависимостей не найду myfunction
, Я недавно ответил на другой вопрос, где другая причина была проблема.
В этих ситуациях вы можете явно указать MATLAB Compiler, что существует зависимость от myfunction
, с использованием %#function
Прагма. В файле, который содержит скрытый вызов myfunction
в верхней части файла (на самом деле где угодно, но, как правило, вы положите его вверху), поместите
%#function myfunction
Затем MATLAB Compiler заставит это быть зависимостью и включит ее в пакет.
Кроме того, при настройке упаковки с mcc
или в deploytool
приложение, вы можете просто добавить вручную myfunction
к пакету самостоятельно (хотя тогда не найдутся вещи, которые myfunction
зависит от).