Как я могу скопировать m-файлы в определенную папку в скомпилированном приложении MATLAB?

Я использую компилятор приложений MATLAB R2015a. После выбора моего основного m-файла MATLAB обнаружил некоторые файлы, необходимые для запуска приложения, но после компиляции и запуска моего приложения скомпилированное приложение не может найти некоторые конкретные m-файлы из установленного набора инструментов (стороннего набора инструментов).

Теперь я хочу скопировать все файлы панели инструментов в целевую папку C:\Users\My_Account\AppData\Local\Temp\My_Account\mcrCache8.5\Program_70\DDM. DDM - это моя папка с инструментами, которую MATLAB создает автоматически на основе вложенных файлов, как упомянуто выше. Я хочу добавить в эту папку другие файлы. Как я могу это сделать? и это хорошее решение для решения этой проблемы?


person Eghbal    schedule 20.07.2015    source источник
comment
Вы должны выяснить, почему компилятор не нашел файлы в стороннем наборе инструментов. Копирование во временную папку mcr не является хорошим решением. Вы можете добавить дополнительные файлы при компиляции.   -  person Navan    schedule 21.07.2015


Ответы (1)


То, что вы пытаетесь сделать, не сработает.

Когда вы компилируете приложение с помощью компилятора MATLAB, он находит весь код, от которого зависит ваша основная функция, шифрует его и упаковывает в исполняемый файл, который позже будет выполнен в среде выполнения компилятора MATLAB (MCR).

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

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

Это может произойти по разным причинам - анализ зависимостей не идеален. Например, если ваш код вызывает eval('myfunction'), анализ зависимостей не найдет myfunction. Недавно я ответил на другой вопрос, в котором проблема была другой причиной.

В этих ситуациях вы можете явно сообщить компилятору MATLAB, что существует зависимость от myfunction, используя прагму %#function. Внутри файла, содержащего скрытый вызов myfunction, вверху файла (на самом деле где угодно, но обычно вы помещаете его вверху), поместите

%#function myfunction

Компилятор MATLAB затем заставит это быть зависимостью и включит ее в упаковку.

В качестве альтернативы, при настройке упаковки с помощью mcc или в приложении deploytool вы можете просто вручную добавить myfunction в пакет самостоятельно (хотя при этом не будут обнаружены вещи, от которых myfunction зависит).

person Sam Roberts    schedule 21.07.2015