IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Utiliser SimLab 3.2 dans Matlab (utiliser une banque de fichiers .dll dans Matlab)


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Utiliser SimLab 3.2 dans Matlab (utiliser une banque de fichiers .dll dans Matlab)
    Bonjour,

    je suis debutant avec Matlab et j'ai un probleme car je veux utiliser un "logiciel" (Simlab) avec Matlab
    Ce logiciel est en fait un ensemble de fonctions a utiliser sous Matlab, mais je crois avoir compris que ces fonctions sont ecrites en C/C++.
    je dispose donc, apres avoir telecharge ce "logiciel", des documents suivants:

    -un ensemble de fichiers .m qui sont ecrits en matlab et que je peux utiliser directement en matlab
    -un ensemble de fichiers .m dans lesquels seuls des commentaires sont ecrits
    -un ensemble de fichiers .dll dont les titres sont les memes que les fichiers .m n'ayant que des commentaires
    -un ensemble de fichiers .h

    n'ayant aucune idée de comment tout ca marche, j'ai cherché un peu sur internet et j'ai cru comprendre que les .dll sont les "traductions" en matlab de programmes initialement ecrits en C/C++. J'ai aussi lu qqpart que Matlab pouvait lire ces .dll sans probleme.

    J'ai donc copié dans un fichier commun tous mes fichiers .m et mes .dll. lorsque je tente alors de faire appel a une fonction .dll OU a une fonction .m qui elle-meme doit appeler une fonction .dll, j'ai l'un ou l'autre ou les deux messages suivants:

    -'Z:\matlab\'nomdurepertoire'\'nomdelafonction'.dll'.
    MEX-files with .dll extensions will not execute in a future version of MATLAB.

    -??? Invalid MEX-file
    'Z:\matlab\'nomdurepertoire'\'nomdelafonction'.dll': das angegebene Modul wurde nicht gefunden.

    (j'utilise matlab en allemand :-/ )

    Notons que, ne sachant absolument pas ce que sont mes fichiers .h, je n'en ai rien fait.


    Quelqu'un a t il une idée, une piste sur comment je peux faire marcher tout ca??

    Merci beaucoup!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Ouvre MATLAB et tape simplement l'instruction suivante dans le Command Window :

    Dis nous si cela fonctionne, sinon, montre nous tous les messages que MATLAB renvoi

    Dis nous aussi quelle est ta version de MATLAB ( Comment connaitre la liste des Toolbox installées sur un ordinateur ?) et sur quelle système d'exploitation tu travailles ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    d'abord merci de l'aide

    je travaille sous Windows 2003 SP2, et Matlab 7.8.0.347, Matlab Compiler 4.10, Java 1.6.0_04-b12.

    lorsque je tape hedgedportfolio, j'obtiens

    ???Invalid MEX-file
    'Z:\.matlab\R14SP3\addFacNorm.dll': das angegebene Modul wurde nicht gefunden

    .

    Error in ==> hedgedportfolio at 11
    addFacNorm('hp1',0,1,0.001,0.999,'hp1note')

    voila.
    addFacNorm est une de ces fameuses fonctions que j'ai dans mon repertoire en .m avec juste des commentaires et en .dll

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Il semble que cette outil utilise des fichiers MEX qui ne sont plus gérés par les nouvelle version de MATLAB.

    As-tu la possibilité de tester le code sur des versions plus anciennes de MATLAB (au moins 7.1 R14SP3) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    donc, d'apres toi, j'ai fait la bonne manip en mettant les .m et les .dll dans le meme fichier et en ne faisant rien d'autre que d'appeler les .dll comme si c'etaient des .m, c'est ca?
    et le probleme viendrait seulement du fait que mes .dll ne sont pas compatibles avec ma version de matlab, trop nouvelle. J'ai bien compris?

    dans ce cas je tenterai sur une plus vieille version des que je peux et je mettrai les resultats ici

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Citation Envoyé par jijimbo Voir le message
    donc, d'apres toi, j'ai fait la bonne manip en mettant les .m et les .dll dans le meme fichier et en ne faisant rien d'autre que d'appeler les .dll comme si c'etaient des .m, c'est ca?
    Je ne comprends pas vraiment ce que tu as fait... as-tu bien suivi toutes les étapes de l'installation de SimLab ?

    SimLab 3.x Installation
    In order to install SimLab 3.x you will need to:

    • Download the SimLab zip file from the simlab web
    • Unzip SimLab zip file into an empty directory of your choice (Please avoid to open files directly from the winzip or the zip program you are using)
    • Launch the setup.exe to start installation
    • During the installation you will provide the requested licence number, you have received by mail
    • The installation will generate a directory called Simlab3.x (By Default "C:\SimLab3.x") containing all the files and documentation
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    oui, tout ca a bien été fait. J'essaie de t'expliquer ou j'en suis, ce que j'ai fait dans l'ordre:

    -apres l'installation de simlab, je me retrouve avec un gros dossier simlab sur mon bureau. dans ce dossier se trouvent des sous dossiers, dont un s'appelant "matlab". les autres sous dossiers, je n'ai aucune idée de a quoi ils correspondent. Ils ont des noms du genre "include", "lib", "bin" etc.

    -je n'ai trouvé aucune aide sur le site de simlab qui me dise quoi faire avec ces dossiers ( pas de .exe, j'ai juste tous ces dossiers a disposition).

    -Naivement, ne sachant pas trop quoi faire, j'ai ouvert le dossier intitulé "matlab" pour voir ce qui s'y trouve. J'y ai trouvé deux sous dossiers, l'un s'appelant "docs" et l'autre "mex". dans "docs" se trouve une batterie de fichiers en .m qui, semble t il, sont des fonctions matlab préécrites que je n'ai plus qu'a utiliser telles qu'elles. Seulement, certaines de ces fonctions sont vides, seuls des commentaires y ont été écrits. J'imagine donc que ces fonctions ont besoin de leur frere MEX pour fonctionner sous matlab. ces freres, je les trouve en version .dll dans le sous dossier "mex"

    -j'ai donc copié, dans un dossier commun, tous mes fichiers .m et tous mes fichiers .dll et j'essaie d'utiliser le tout dans matlab. et j'ai les messages d'erreur affichés

    Si tout ca n'est pas clair pour toi, il vaut mieux laisser tomber, a moins que quelqu'un ici ne connaisse et n'utilise simlab et puisse tout m'expliquer depuis le debut...

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Tu n'as pas besoin de déplacer les fichiers MATLAB qui ont été installés par Simlab, laisse les dans leur dossier d'installation initiale.

    Ouvre juste MATLAB et tape la commande hedgedportfolio
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    mais je me place dans quel dossier une fois que je suis dans matlab?
    je veux dire, pour que matlab reconnaisse une fonction et puisse la lire, il faut qu'on soit exactement dans le dossier ou elle est, ou alors il est suffisant e se placer dans un dossier contenant un sous-dossier contenant cette fonction?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Je pense que le chemin a été définit à l'installation de Simlab.

    Tu devrais donc pouvoir utiliser n'importe quel code de Simlab depuis n'importe quel répertoire dans MATLAB.

    Tu peux toujours essayer... ça ne coûte rien
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    je travaille dans une entreprise ou matlab est installé sur le serveur de l'entreprise et simlab sur mon ordi...
    donc des que j'arrive a avoir les 2 installés sur la meme machine, j'essaie et je te tiens au courant!

  12. #12
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par jijimbo Voir le message

    -??? Invalid MEX-file
    'Z:\matlab\'nomdurepertoire'\'nomdelafonction'.dll': das angegebene Modul wurde nicht gefunden.
    Cette erreur veut dire qu'il manque une dépendance à ton fichier DLL... Tu devrais pouvoir voir la quelle avec dependancywalker: http://www.dependencywalker.com/

    Salutations,

    Greg

  13. #13
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par jijimbo Voir le message
    mais je me place dans quel dossier une fois que je suis dans matlab?
    je veux dire, pour que matlab reconnaisse une fonction et puisse la lire, il faut qu'on soit exactement dans le dossier ou elle est, ou alors il est suffisant e se placer dans un dossier contenant un sous-dossier contenant cette fonction?
    Tant que ta fonction MEX est dans le "path" de MATLAB, elle peut etre appellée depuis n'importe quelle autre répertoire. Les dépendences du fichier MEX (autres DLLs), devraient être soit dans le même répertoire que la fonction MEX ou dans le PATH du systeme d'exploitation (par opposition au path de matlab...).

    Salutations,

    Grég

Discussions similaires

  1. Importer un fichier excel dans Oracle (utiliser Toad?)
    Par StephMtl dans le forum Import/Export
    Réponses: 1
    Dernier message: 02/09/2011, 16h10
  2. Réponses: 9
    Dernier message: 08/11/2010, 17h12
  3. [Fichier] Problemes dans l'utilisation de fstream
    Par Kerwando dans le forum SL & STL
    Réponses: 14
    Dernier message: 09/08/2007, 01h14
  4. Integration d'un fichier dll dans une application Java
    Par menzlitsh dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2006, 15h54
  5. Réponses: 2
    Dernier message: 03/07/2006, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo