То, что вы пытаетесь сделать, не сработает.
Когда вы компилируете приложение с помощью компилятора 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