2011-07-07 2 views
1

Je travaille sur une application Java GUI qui utilise le code MATLAB pour les calculs. Toutefois, le code MATLAB lui-même utilise un fichier DLL. J'ai emballé toutes mes fonctions MATLAB dans une classe et créé un fichier jar.impossible de charger une DLL dans MATLAB via Java

J'ai ajouté le fichier d'en-tête C et le fichier DLL dans le dossier racine du projet Java et ajouté le jar contenant le code MATLAB aux propriétés. Cependant, quand j'appelle les méthodes, il semble exécuter, mais il est incapable de charger le fichier DLL.

Voici le message d'erreur que je reçois:

{??? 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 

quand j'ai vérifié en fait l'adresse, le fichier DLL est là avec le fichier d'en-tête et dans ce répertoire.

Mise à jour

J'ai essayé tous de suggestionsRichie.

  1. Je pourrais exécuter la méthode qui utilise DLL sur MATLAB.

  2. Je pourrais appeler n'importe quelle méthode normale de Java qui n'utilise pas la DLL.

  3. Je pourrais même appeler la méthode qui utilise la DLL, mais le problème se produit lorsque la bibliothèque est supposée charger.

Il dit

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

Si je lance le code Matlab bien, tout cela fonctionne très bien. C'est juste quand je cours de Java, la DLL ne charge pas.

Répondre

0

Il y a beaucoup d'endroits où le problème pourrait être, et votre exemple n'est pas reproductible, il est donc difficile de répondre comme il est. Pour aller au fond des choses, nous devons décocher le problème et affiner la source de l'erreur. Voici quelques choses à essayer.

Pouvez-vous exécuter votre code de modélisation MATLAB directement, y compris l'exécution des appels à la DLL?

Votre code MATLAB s'exécute-t-il si vous n'appelez pas la DLL? (Peut-être simuler l'appel, et juste le faire retourner un numéro pour l'instant.)

Pouvez-vous appeler d'autres méthodes de la forme DLL, au sein de votre projet JAVA?

+0

j'ai fait tous – Nick

+0

0 vote vers le bas acceptent \t Je l'ai fait tous. Je pourrais exécuter la méthode qui utilise DLL sur MATLAB. Je pourrais appeler n'importe quelle méthode normale de JAVA qui n'utilise pas la DLL. Je pourrais même appeler la méthode qui utilise la DLL, mais le problème survient lorsque la bibliothèque est chargée de charger. Il dit erreur en utilisant ==> loadlibrary à 477 Il y avait une erreur de chargement de la bibliothèque "C: \ Users \ août \ Documents \ Backup \ SourceTracing \ epanet2.dll" Si je lance le code dans Matlab si, Tout fonctionne bien. C'est juste quand je cours de JAVA, la DLL ne charge pas. – Nick

Questions connexes