2012-06-04 4 views
3

У меня есть проект MATLAB, который я компилирую, чтобы иметь один исполняемый файл, используя MCC.Как запустить внешний .m-код в скомпилированном приложении MATLAB?

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

Целью является предоставление приложения, в котором другие разработчики могли бы добавить свои «плагины», написанные в MATLAB.

Я искал способ запуска внешних файлов .m внутри скомпилированного приложения MATLAB (например, этот поток: Running an .m file from a MATLAB-compiled function), но он не подходит для моих целей здесь, хотя он отлично работает, используя eval().

Но этого eval() «трюк» недостаточно, так как он не позволяет определять новые функции или классы. Например, я хотел бы, чтобы внешние .m-файлы были новыми классами (унаследованными от скомпилированных «интерфейсов» в исполняемом файле).

Есть ли способ динамически загружать файлы .m в скомпилированный исполняемый файл MATALB? (даже если для этого требуется лицензия MATLAB).

И есть ли какой-либо «недокументированный MATLAB», который относится к этой теме, которую я мог бы исследовать дальше?

С уважением,

+0

@Andrey: спасибо за ссылку. кажется, невозможно интерпретировать M-файлы (отличные от 'eval') в скомпилированном приложении MATLAB :( –

ответ

0

Я думаю, что единственный способ сделать некоторые системные вызовы из скомпилированной функции, как:

mFile2Launch='foo'; %%% or whatever input 
system(['matlab -r "' mFile2Launch '"']); 

или вы также можете использовать это более сложную линию, чтобы убедиться, что все работы хорошо:

system(['matlab -nodesktop -nosplash -nodisplay -r "try, ' mFile2Launch '; end; quit"']) 
+0

моей целью было не выполнение новой среды MATLAB из моего скомпилированного исполняемого файла MATLAB, а использование некоторого внешнего .m файлы в скомпилированном исполняемом файле. –

+0

Я не думаю, что это возможно. Именно поэтому я предложил это решение ... – Oli

1

Если бы вы были в состоянии создавать и распространять скомпилированные приложения, которое может выполнить произвольные .m файлы, пользователи смогут сделать довольно MUC h все, что может сделать MATLAB, но бесплатно (даже если это не было вашим намерением).

Предоставление им этой возможности (даже если вы предназначено для чего-то более невинного и полезного) противоречит лицензионному соглашению для MATLAB Compiler, а MathWorks также применяет некоторые технические ограничения, чтобы затруднить это.

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

(конечно, IANAL)

+0

Я понимаю, что это будет «взломать» для выполнения файлов .m без лицензии MATLAB. Вот почему я спросил, «даже если ему нужна лицензия MATLAB для этого», но это кажется невозможным :( –

+0

Если у ваших пользователей есть лицензия MATLAB, не можете ли вы просто предоставить им несвязанное приложение? Если это запатентовано, возможно, вы могли бы его перенести. –

Смежные вопросы