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 :

Problème création fichier mex [MEX]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mars 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 130
    Points : 93
    Points
    93
    Par défaut Problème création fichier mex
    Bonjour à tous,

    j'ai un petit souci avec un fichier mex. Je précise que je dois créer le fichier mex à partir de codes que je n'ai pas fait moi-même.
    Il s'agit d'une toolbox matlab utilisant des fonctions en C et qui est censée très bien marcher puisque son créateur a compilé sans problème pour la version 6 de Matlab.

    Mon problème est que mon fichier mex n'a pas l'air correct car quand je veux lancer la fonction après compilation, j'ai un message d'erreur conséquent : "segmentation violation detected...".

    J'ai 2 compilateurs disponibles sur mon Pc : Lcc et celui de Visual Studio 5.
    Or si j'utilise Lcc, il ne compile pas et j'ai une tonne d'erreurs venant des codes C (syntax error et missing identifier).
    Si j'utilise l'autre compilateur, ça compile mais ça ne marche pas.

    Que dois-je en déduire ? Y a-t-il un problème dans le code C ?

    Merci d'avance,

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Difficile de répondre sans plus d'informations
    Il faut en plus savoir que la compilation de MATLAB a fortement changé depuis la version 7 (je ne sais pas si c'est impactant ici mais bon)

    Sinon :
    - quelle commande utilises-tu pour compiler ?
    - n'y a-t-il pas des infos qui paraitraient un peu pertinentes dans le segmentation violation (oui je sais c'est touffu mais des fois y'a des vraies infos dedans )

  3. #3
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mars 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 130
    Points : 93
    Points
    93
    Par défaut
    Merci de ta réponse.

    Alors j'ai la version 7.4.

    La commande que j'utilise est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex -I<mon répertoire avec les fichiers .h> nomFonction.c <répertoire où j'ai le fichier .dll.a>
    Etant donné que je n'y connais pas grand chose aux fichiers mex etc, j'ai utilisé la commande que donnait le créateur de la toolbox dans son aide.

    Pour le message d'erreur je sais pas trop ce que je dois regarder...
    Il y a beaucoup de m_interpreter.dll
    Je le mets au cas où mais pour moi c'est inintelligible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Stack Trace:
      [0] 0x00905a4d(1, 0x00cee620, 1, 0x00cee680)
      [1] libmex.dll:_mexRunMexFile(1, 0x00cee620, 1, 0x00cee680) + 139 bytes
      [2] libmex.dll:private: void __thiscall Mfh_mex::runMexFileWithSignalProtection(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00cee620, 1, 0x00cee680) + 86 bytes
      [3] libmex.dll:public: virtual void __thiscall Mfh_mex::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00cee620, 1, 0x00cee680) + 263 bytes
      [4] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00cee620, 1, 0x00cee680) + 203 bytes
      [5] m_interpreter.dll:_inDispatchWithDebug(705, 1, 0x00cee620, 1) + 192 bytes
      [6] m_interpreter.dll:_inDispatchFromStack(705, 0x0f5751d8 "jpeg_read", 1, 1) + 877 bytes
      [7] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x0f5751d8 "jpeg_read", 705, 1, 1) + 156 bytes
      [8] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(2, 0, 0, 0) + 2745 bytes
      [9] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(2, 0, 0, 0) + 87 bytes
      [10] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(2, 0, 0, 0) + 302 bytes
      [11] m_interpreter.dll:_inInterPcode(2, 0x95698f34, 0, 0x78503444) + 84 bytes
      [12] m_interpreter.dll:enum inExecutionStatus __cdecl in_local_call_eval_function(int *,struct _pcodeheader *,int *,struct mxArray_tag * * const,enum inDebugCheck)(0x00cef31c, 0x00cef38c, 0x00cef3a8, 2) + 152 bytes
      [13] m_interpreter.dll:__catch$?inEvalStringWithIsVarFcn@@YA?AW4inExecutionStatus@@PAU_memory_context@@PBDW4EvalType@@HQAPAUmxArray_tag@@W4inDebugCheck@@PAU_pcodeheader@@PAHP6A_NPAX1@Z7@Z$0(0x78503444, 0x01674420 "jpegobj = jpeg_read('C:\Document..", 0, 0) + 219 bytes
      [14] m_interpreter.dll:enum inExecutionStatus __cdecl inEvalCmdWithLocalReturnandtype(char const *,int *,enum inDebugCheck)(0x01674420 "jpegobj = jpeg_read('C:\Document..", 0, 2, 0x00cef3f8) + 69 bytes
      [15] m_interpreter.dll:_inEvalCmdNoEnd(0x01674420 "jpegobj = jpeg_read('C:\Document..", 0xc37b9f89, 0x7848c6b0, 0x00ed57c0) + 16 bytes
      [16] bridge.dll:enum inExecutionStatus __cdecl ThrowSignal(char const *)(0x01674420 "jpegobj = jpeg_read('C:\Document..", 0xc37b98f5, 0x017f15a8, 0x017f1548) + 75 bytes
      [17] bridge.dll:__catch$_mnParser$0(0xcf85975b, 0x017f1548, 0x017f1548, 0) + 328 bytes
      [18] mcr.dll:public: void __thiscall mcrInstance::mnParser(void)(0xce7dad96, 0x004074a4, 402237, 0) + 62 bytes
      [19] MATLAB.exe:0x004021b8(4194304, 0, 402237, 10)
      [20] MATLAB.exe:0x00403bd2(1109972, 0, 0x7ffde000, 0x8054a6ed)
      [21] kernel32.dll:0x7c816fd7(0x00403daf, 0, 0x78746341, 32)
    Edit : j'ai oublié : je dois lui spécifier le nom du fichier .dll.a sinon ça ne "marche" pas...

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Je n'y connais pas grand-chose non plus à vrai dire
    As-tu essayé de compiler le fichier exemple donné dans la doc pour déjà voir si le problème vient de la compilation ou de tes fichiers ?
    (dans MATLAB>External interfaces > Creating C Language MEX-Files > Examples of C MEX-Files)

    Tu parles de fichier dll ? De quoi s'agit-il exactement ?
    Les extensions dll n'existent plus il me semble à partir de la version 7.

  5. #5
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mars 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 130
    Points : 93
    Points
    93
    Par défaut
    Oui j'ai essayé l'exemple et je n'ai eu aucun problème.

    En fait je n'ai fait que suivre la commande du créateur de la toolbox car j'ai énormément de mal avec tout ce qui est compilation etc.

    Donc apparemment il faut que je passe en paramètre de mex, le chemin jsuqu'au fichier libjpeg.dll.a
    Moi j'ai cette extension mais il dit qu'on peut avoir libjpeg.lib (est-ce sous unix ?)

    J'avoue ne pas comprendre grand chose... je voulais juste un code permettant d'aller chercher certaines infos dans un fichier jpeg

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Tu as le droit de nous dire où tu l'as récupérée ta Toolbox ?
    Ou tu as un moyen de rentrer en contact avec l'auteur ?

    Car franchement si il y a une dll dans ses fichiers j'ai peur que cela ne puisse pas fonctionner avec une autre version que celle que lui a utilisée.

  7. #7
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mars 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 130
    Points : 93
    Points
    93
    Par défaut
    Oui tout à fait
    La toolbox est à cette adresse : http://www.philsallee.com/jpegtbx/index.html

    Je ne pensais pas contacter l'auteur car en essayant aujourd'hui le site ne marchait plus... cela dit là où je fais mon stage, ils ont une connexion bizarre

    Oui donc cette toolbox nécessite la librairie libjpeg si on veut compiler pour Matalb 7... mais j'ai eu des problèmes pour la compilation avec libjpeg alors j'ai utilisé GnuWin32 (http://gnuwin32.sourceforge.net/packages/jpeg.htm) qui est censé être la même chose...

    Bon je m'y remettrai demain donc bonne soirée !

  8. #8
    Membre régulier
    Femme Profil pro
    Inscrit en
    Mars 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 130
    Points : 93
    Points
    93
    Par défaut
    Juste pour dire que j'ai résolu mon problème et donner la solution pour ceux qui auraient les même difficultés que moi.

    La toolbox que je voulais utiliser nécessite la librairie libjpeg et je pense que le problème venait de ma version de cette librairie (lien sur le site du programmeur de la toolbox donné plus haut) que je n'arrivais pas à compiler correctement.
    J'ai donc trouvé cette librairie précompilée à cette adresse
    http://www.clanlib.org/download-bina...in32-vc80.html

    le zip de libjpeg marche sans problème pour Visual C++ 8. Je n'ai ensuite eu aucun souci pour générer mes fichiers mex.

    Merci encore à caro95470 d'avoir pris le temps de me répondre sur ce post

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème création Fichier sous Windows
    Par jpselve dans le forum Débuter
    Réponses: 4
    Dernier message: 01/03/2012, 12h32
  2. Problème création fichier Jar
    Par Henri dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/07/2010, 11h30
  3. Probléme création fichier dans un script
    Par nicowax dans le forum Unix
    Réponses: 5
    Dernier message: 15/01/2009, 13h19
  4. Problème création fichier CSV
    Par goboben dans le forum Documents
    Réponses: 1
    Dernier message: 04/03/2008, 17h31
  5. problème création fichier aide
    Par michel71 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/08/2007, 23h09

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