невозможно загрузить DLL в MATLAB через Java - PullRequest
1 голос
/ 07 июля 2011

Я работаю над Java GUI-приложением, которое использует код MATLAB для расчетов. Однако сам код MATLAB использует файл DLL. Я упаковал все свои функции MATLAB в класс и создал файл jar.

Я добавил файл заголовка C и файл DLL в корневую папку проекта Java-проекта и добавил к свойствам jar-файл, содержащий код MATLAB. Однако, когда я вызываю методы, кажется, что они выполняются, но не могут загрузить файл DLL.

Вот сообщение об ошибке, которое я получаю:

{??? Error using ==> loadlibrary at 477
There was an error loading the library
**"C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"**
FAiled..Error using ==> loadlibrary at 477
Undefined function or variable 'epanet2_proto'.

There was an error loading the library
"C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"
Error in ==> epanetloadfile at 31

Undefined function or variable 'epanet2_proto'.

Error in ==> sourceTraceGUI at 8

когда я на самом деле проверил адрес, там находится файл DLL вместе с файлом заголовка.

Обновление

Я испробовал все Ричи предложений .

  1. Я мог бы запустить метод, который использует DLL на MATLAB.

  2. Я мог бы вызвать любой нормальный метод из Java, который не использует DLL.

  3. Я мог бы даже вызвать метод, который использует DLL, но проблема возникает, когда предполагается загрузка библиотеки.

Там написано

Error using ==> loadlibrary at 477
There was an error loading the library
"C:\Users\AUG\Documents\Backup\SourceTracing\epanet2.dll"

Если я запускаю код в MATLAB, все работает нормально. Просто когда я запускаю из Java, DLL не загружается.

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Я разместил этот вопрос на форуме Matlab и, наконец, получил несколько ответов. Для тех, у кого будет такая же проблема в будущем, обратитесь по этой ссылке.

http://www.mathworks.com/matlabcentral/answers/11321-loading-a-dll-in-mathlab-through-java

0 голосов
/ 08 июля 2011

Есть много мест, где проблема может быть, и ваш пример не воспроизводим, поэтому трудно ответить, как есть. Чтобы разобраться в этом, нам нужно снять проблему и сузить источник ошибки. Вот несколько вещей, которые можно попробовать.

Можете ли вы запустить код моделирования MATLAB напрямую, включая вызовы DLL?

Запускается ли ваш код MATLAB, если вы не вызываете DLL? (Возможно, сфальсифицируйте вызов и просто верните ему номер.)

Можете ли вы вызывать другие методы из DLL, из вашего JAVA-проекта?

...