Я ищу способ запустить приложение из Matlab.Дело в том, что мой скрипт Matlab сохраняет некоторые результаты в файл, который затем должен быть открыт в соответствующем приложении (в данном случае Blender).
Я знаком с такими командами, как
system('program_name')
или
!program_name
и некоторые другие способы, но дело в том, что приложение запускается с помощью PATL в Matlab, поэтому оно ищет в каталоге Matlab все необходимые ему библиотеки.Например:
>> !blender
blender: /usr/local/MATLAB/R2011a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by blender)
Есть ли какой-нибудь способ запустить приложение, которое использует глобальную (системную) переменную PATH?
Некоторое время назад я подумал, что нашел твик, а именно запуск терминалаиз Matlab, с некоторыми аргументами (имя файла Blender.blend).
system('terminal -x blender /home/pieter/Red.blend')
Это сработало пару раз, но теперь я получаю ошибки после выполнения этой команды примерно 20 раз ...
>> system('terminal -x blender /home/pieter/Red.blend')
(terminal:10982): GLib-CRITICAL **: PCRE library is compiled without UTF8 support
(terminal:10982): Terminal-CRITICAL **: Failed to parse regular expression pattern 0: PCRE library is compiled without UTF8 support
Я использую Arch LinxМежду прочим.
Edit :
Ну, я просто подумал о довольно грязном решении.Matlab использует переменную окружения
LD_LIBRARY_PATH
Для путей к необходимым библиотекам:
getenv('LD_LIBRARY_PATH')
/usr/local/MATLAB/R2011a/sys/os/glnx86:/usr/local/MATLAB/R2011a/bin/glnx86:/usr/local/MATLAB/R2011a/extern/lib/glnx86:/usr/local/MATLAB/R2011a/runtime/glnx86:/usr/local/MATLAB/R2011a/sys/java/jre/glnx86/jre/lib/i386/native_threads:/usr/local/MATLAB/R2011a/sys/java/jre/glnx86/jre/lib/i386/client:/usr/local/MATLAB/R2011a/sys/java/jre/glnx86/jre/lib/i386
Поэтому я могу сохранить эту информацию в переменной (например, MatlabPath ):
MatlabPath = getenv('LD_LIBRARY_PATH')
и затем, прежде чем я вызову blender, сделайте следующее:
setenv('LD_LIBRARY_PATH',getenv('PATH'))
Что заставляет Matlab использовать мои системные библиотеки.Затем после запуска программы переназначьте старое значение в LD_LIBRARY_PATH:
setenv('LD_LIBRARY_PATH',MatlabPath)
Итак ... это решение, но если кто-нибудь знает более чистый способ решения проблемы, дайте мне знать.