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 :

[Débutant] Problème de compilateur Archi 64 bits


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [Débutant] Problème de compilateur Archi 64 bits
    Bonjour à tous,

    Une fois n'est pas coutume, je me tourne vers votre (si riche) forum car je rencontre un problème au delà de mes compétences.

    J'ai plusieurs routines en C et en Matlab que je souhaite "regrouper" au sein d'un exécutable. J'ai donc lu l'ensemble des docs fournies par MW pour la création de MEX Files.

    Problème: dès l'exemple ('yprime.c'), j'ai un souci d'architecture...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    --> link /out:"yprime.mexw64" /dll /export:mexFunction /LIBPATH:"C:\Program Files\MATLAB\R2010b\extern\lib\win64\microsoft" libmx.lib libmex.lib libmat.lib /MACHINE:X64 -lkernel32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"C:\Users\Colin\AppData\Local\Temp\mex_PuFycO\templib.x" /MAP:"yprime.mexw64.map"  @C:\Users\Colin\AppData\Local\Temp\mex_PuFycO\mex_tmp.rsp   
     
    LINK : warning LNK4044: unrecognized option '/lkernel32'; ignored 
    LINK : fatal error LNK1104: cannot open file 'yprime.mexw64' 
     
      C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: Link of 'yprime.mexw64' failed.
    Visiblement, j'ai un problème de compilateur... On m'a conseillé de vérifier qu'il s'agissait bien d'un compilo 64 bits par le biais d'un 'mbuild -setup'. Réponse de ML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ??? Undefined function or method 'mbuild' for input arguments of type 'char'.


    Quelqu'un a-t-il déjà rencontré ce problème? Et quid de ce 'mbuild'?

    Je suis sur R2010b - Windows 7 - 64 bits avec Microsoft Visual C++ 2010 Express et Windows SDK 7.1 1 correctement installés. En particulier, j'ai fait gaffe à :
    "To use Microsoft Visual Studio with MATLAB on a 64-bit platform, you must choose "X64 Compilers and Tools" when installing Microsoft Visual Studio. This is not selected by default."

    Merci d'avance pour vos réponses.

    Cordialement,

    CG

  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 : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par cg1987 Voir le message
    Visiblement, j'ai un problème de compilateur... On m'a conseillé de vérifier qu'il s'agissait bien d'un compilo 64 bits par le biais d'un 'mbuild -setup'.
    Pour les fichiers MEX, il faut faire :

    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour Dut,

    Merci pour ta réponse! J'ai bien déroulé le 'mex -setup' qui me permet de choisir le compilateur avec lequel je veux travailler.
    Ce que j'ai reporté correspond à la fin de l’exécution de
    Je n'ai jamais entendu parler du mbuild (ni trouvé bcp d'info sur le net à ce sujet). Je posais juste la question de savoir si quelqu'un sait à quoi cela correspond et si cela peut être utile pour confirmer ce qui ressemble fort à un problème de compatibilité 32/64 bits!

    CG

  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 : 53 166
    Points
    53 166
    Par défaut
    MBUILD est une commande qui fait partie du MATLAB Compiler et qui sert à générer des exécutables ou des bibliothèques partagées.

    Pour revenir à ton problème, donne nous le texte complet renvoyé par la commande MEX avec l'argument v
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Très précisément ceci:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    >> mex -v yprime.c
    -> Default options filename found in C:\Users\Colin\AppData\Roaming\MathWorks\MATLAB\R2010b 
    ---------------------------------------------------------------- 
    ->    Options file           = C:\Users\Colin\AppData\Roaming\MathWorks\MATLAB\R2010b\mexopts.bat 
          MATLAB                 = C:\Program Files\MATLAB\R2010b 
    ->    COMPILER               = cl 
    ->    Compiler flags: 
             COMPFLAGS           = /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD 
             OPTIMFLAGS          = /O2 /Oy- /DNDEBUG 
             DEBUGFLAGS          = /Z7 
             arguments           =  
             Name switch         = /Fo 
    ->    Pre-linking commands   =  
    ->    LINKER                 = link 
    ->    Link directives: 
             LINKFLAGS           = /dll /export:mexFunction /LIBPATH:"C:\Program Files\MATLAB\R2010b\extern\lib\win64\microsoft" libmx.lib libmex.lib libmat.lib /MACHINE:X64 -lkernel32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\templib.x" /MAP:"yprime.mexw64.map" 
             LINKDEBUGFLAGS      = /debug /PDB:"yprime.mexw64.pdb" 
             LINKFLAGSPOST       =  
             Name directive      = /out:"yprime.mexw64" 
             File link directive =  
             Lib. link directive =  
             Rsp file indicator  = @ 
    ->    Resource Compiler      = rc /fo "mexversion.res" 
    ->    Resource Linker        =  
    ---------------------------------------------------------------- 
     
     
    --> cl  /c /Zp8 /GR /W3 /EHs /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /DMATLAB_MEX_FILE /nologo /MD /FoC:\Users\Colin\AppData\Local\Temp\mex_oyODi7\yprime.obj -I"C:\Program Files\MATLAB\R2010b"\extern\include /O2 /Oy- /DNDEBUG -DMX_COMPAT_32 yprime.c 
     
    yprime.c 
    yprime.c(85) : warning C4267: '=' : conversion from 'size_t' to 'mwSize', possible loss of data 
    yprime.c(86) : warning C4267: '=' : conversion from 'size_t' to 'mwSize', possible loss of data 
        Contents of C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\mex_tmp.rsp: 
      C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\yprime.obj 
     
     
    --> link /out:"yprime.mexw64" /dll /export:mexFunction /LIBPATH:"C:\Program Files\MATLAB\R2010b\extern\lib\win64\microsoft" libmx.lib libmex.lib libmat.lib /MACHINE:X64 -lkernel32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\templib.x" /MAP:"yprime.mexw64.map"  @C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\mex_tmp.rsp   
     
    LINK : warning LNK4044: unrecognized option '/lkernel32'; ignored 
    LINK : fatal error LNK1104: cannot open file 'yprime.mexw64' 
     
      C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: Link of 'yprime.mexw64' failed. 
     
    ??? Error using ==> mex at 208
    Unable to complete successfully.
    Par ailleurs, merci pour la réponse sur mbuild!

  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 : 53 166
    Points
    53 166
    Par défaut
    Les caractères en rouge à la ligne suivante me paraissent suspects :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             LINKFLAGS           = /dll /export:mexFunction /LIBPATH:"C:\Program Files\MATLAB\R2010b\extern\lib\win64\microsoft" libmx.lib libmex.lib libmat.lib /MACHINE:X64 -lkernel32 user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /manifest /incremental:NO /implib:"C:\Users\Colin\AppData\Local\Temp\mex_oyODi7\templib.x" /MAP:"yprime.mexw64.map"
    Pourrais-tu éditer le fichier C:\Users\Colin\AppData\Roaming\MathWorks\MATLAB\R2010b\mexopts.bat (en faisant une copie au préalable) et modifier la ligne qui commence par set LINKFLAGS= en remplaçant -lkernel32 par kernel32.lib

    Ensuite relance la commande :
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour Dut,

    Au risque de me répéter, merci beaucoup de t'être penché sur le sujet.
    J'ai testé ta méthode, rien ne change chez moi pour l'appel à


    J'ai fini par appeler le support MW et il s'avère que c'est un bug avéré pour R2010b. C'est comme je le supposais un problème de compatibilité 32/64 bits.
    Je vais updater à R2011a, il parait que le problème a été réglé dans cette version...

    A voir!

    CG

  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 : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par cg1987 Voir le message
    Je vais updater à R2011a
    Ben on peut pas dire que ce soit une solution économique

    Sinon sais-tu si il y a une entrée dans les Bug Reports sur le site de MathWorks pour ce bug ?
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Dut Voir le message
    Ben on peut pas dire que ce soit une solution économique
    De l'avantage d'avoir une trial version et un bug qu'ils reconnaissent...

    Non, je ne crois pas. Avant de poster, j'ai pas mal fouillé dans le Bug Report et je n'ai rien trouvé qui puisse ressembler à ce problème.

Discussions similaires

  1. [Débutant] Programmation OS , asm/C/C++, compilateur 16/32 bits
    Par tlt dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 22/04/2008, 19h59
  2. Réponses: 2
    Dernier message: 28/04/2004, 11h25
  3. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 13h40
  4. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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