IPPL со средой выполнения компилятора Matlab (MCR)

Я пытаюсь развернуть приложение из Matlab в JAVA. Я использую Matlab Builder JA и Image Processing Toolbox. Я создаю свой jar-файл из Matlab R2012a с помощью инструмента развертывания на MacOSX.

Когда я запускаю свою программу JAVA, используя этот jar на своем Mac, все в порядке, но когда я пытаюсь запустить ее в системе Linux или Windows, я получаю сообщение об ошибке:

Неопределенная функция или переменная 'ipplmex'. Ошибка в ==> ippl в 48 Ошибка в ==> imrotate> useIPP в 205

Деактивация использования IPPL с помощью iptsetpref('UseIPPL', false) не решает мою проблему.

Я также проделал ту же самую работу в среде Linux с помощью Matlab R2011a, и она работает в Linux, но не на машине MacOSX с той же ошибкой.

Если у кого-то есть идеи по поводу этой вещи IPPL при смене ОС, это было бы здорово.

Спасибо !


person Monki    schedule 03.12.2012    source источник
comment
Интересно, отличается ли версия IPPL, развернутая в каждой среде?   -  person Brendan Hannemann    schedule 03.12.2012


Ответы (1)


Компоненты Java, созданные с помощью Builder JA, являются кроссплатформенными только в том случае, если они не зависят от специфичных для платформы библиотек, таких как создаваемые вами файлы MEX или библиотеки IPPL, поставляемые с Image Processing Toolbox.

Если вы хотите, чтобы ваш компонент Java использовал IPPL, я думаю, вам нужно создать компонент Java один раз на Mac, один раз в Linux, один раз в Windows и использовать версию, созданную на соответствующей платформе.

ipplmex — это файл MEX (зависящий от платформы), который вызывается ippl, служебной функцией, проверяющей доступность IPPL. Я не могу проверить это в данный момент, но я думаю, что это проверяет доступность независимо от того, указали ли вы, что действительно хотите использовать IPPL, с помощью команды iptsetpref. Следовательно, вне зависимости от того, указываете ли вы, что следует использовать IPPL, по-прежнему вызывается MEX-файл, зависящий от платформы.

Опять же, я не могу проверить это в данный момент, но если вас устраивает, что ваш компонент не использует IPPL, вы можете попробовать изменить команду ippl, чтобы она просто возвращала ноль (указывая, что IPPL недоступен), не пытаясь выполнить ipplmex . (Обязательно сделайте копию существующего файла ippl.m, прежде чем пытаться внести какие-либо изменения).

person Sam Roberts    schedule 03.12.2012