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 :

Options à passer à msvc++ ? [MEX]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut Options à passer à msvc++ ?
    Bonjour,

    J'ai écrit une fonction en C que j'aimerai interfacer avec Matlab.
    Je veux compiler son code avec le compilateur de Microsoft (et non Lcc, fourni avec Matlab).

    J'utilise la version express de Visual Studio (2005).
    Problème : le script mex (option -setup) ne détecte pas la présence du compilateur sur mon système.

    Je me dis, c'est pas grave, rien ne m'empêche de compiler à partir de l'IDE de Microsoft. Oui, sauf qu'il y a des options spéciales à passer au compilateur, afin que l'interfacage puisse se faire correctement. Je ne connais pas ces options.

    Je sais que le script mex détectera la version professionnelle de Visual Studio (avec le compilo v. 7.1, même 6.0 ... pour le 8.0 j'en sais rien).
    Quelqu'un qui aurait Visual Studio Pro et Matlab pourrait-il me copier/coller toute la sortie de ce qui suit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mex -v "lecteur:\chemin_de_matlab\extern\examples\mex\yprime.c
    Au moins je saurai quelles options j'aurai à passer au compilo...


    EDIT :
    Sinon je peux toujours aller lire les squelettes des fichiers de configuration utilisé par le script mex lui-même pour connaître la liste des options à passer... Je n'y avais pas pensé sur le coup.

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Visual Express c'est la version free non? c'est le petit frère de la version pro?

    pour que mex -setup reconnaisse ton compilo, il faut que le chemin de celui ci soit dans le path system.
    C'est à dire clique droit sur Poste de Travail-> Avancé-> Varaibles d'environnement-> Varaible systeme Path

    Avant vérifie que tn compilo est supporté (note 1601):
    http://www.mathworks.com/support/tec...1600/1601.html

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut
    Citation Envoyé par tug83
    Visual Express c'est la version free non? c'est le petit frère de la version pro?
    Oui c'est ça, la version désossée quoi

    Citation Envoyé par tug83
    pour que mex -setup reconnaisse ton compilo, il faut que le chemin de celui ci soit dans le path system.
    Hmm.. pas nécessairement non.

    En fait, les gens de Matlab n'ont pas testé la version express de Visual Studio et donc seules les versions pros de VS sont officielement supportées.

    Je pense qu'officieusement, VSExpress doit l'être aussi (je ne vois pas pourquoi il ne le serait pas, y'a le compilo msvc++ 8.0 derrière). Mais l'utilitaire mex rechigne à le détecter (quand bien même je le met dans le PATH - ou alors, je m'y prend mal c'est possible). C'est pour cela que je suis à la recherche de gens possédant la version pro de VS.

  4. #4
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    pourquoi tu n'utilies pas le Lcc qui est supporté?
    et puis pourquoi tu cherches à connaitre le verbose de mcc -v de yprime?
    Je ne comprends pas ta logique

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 18
    Par défaut
    Comme je l'ai expliqué, je cherche à connaître ce que renvoie mex -v pour savoir quelles options passer au compilo (et à l'éditeur de liens) de msvc++ afin que l'interfacage avec ma fonction C se fasse correctement.

    Je sais qu'il faut définir un point d'entrée "mexFunction"... mais bon, quand je lance ma fonction au niveau de l'interprète, Matlab me crache une erreur.

    Bref, je tatonne avec les options du compilo mais sans résultats pour le moment.

  6. #6
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    C'est quoi ton erreur?

    Sinon voici la sortie de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    copyfile([matlabroot '\extern\examples\mex'])
    mex -v yprime.c
    avec Microsoft Visual C/C++ version 7.1 in Microsoft Visual Studio .NET 2003
    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
    46
    47
    48
     
     This is mex, Copyright 1984-2005 The MathWorks, Inc. 
     
    -> Default options filename found in C:\WINNT\Profiles\MATLAB\R2006b 
    ---------------------------------------------------------------- 
    ->    Options file           = C:\WINNT\Profiles\MATLAB\R2006b\mexopts.bat 
          MATLAB                 = D:\APPLIC~1\R2006b 
    ->    COMPILER               = cl 
    ->    Compiler flags: 
             COMPFLAGS           = -c -Zp8 -G5 -GR -W3 -DMATLAB_MEX_FILE -nologo 
             OPTIMFLAGS          = /MD -O2 -Oy- -DNDEBUG 
             DEBUGFLAGS          = /MD -Zi -Fd"yprime.mexw32.pdb" 
             arguments           =  
             Name switch         = /Fo 
    ->    Pre-linking commands   =  
    ->    LINKER                 = link 
    ->    Link directives: 
             LINKFLAGS           = /dll /export:mexFunction /MAP /LIBPATH:"D:\APPLIC~1\R2006b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib /implib:C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\templib.x /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
             LINKDEBUGFLAGS      = /DEBUG /PDB:"yprime.mexw32.pdb" 
             LINKFLAGSPOST       =  
             Name directive      = /out:"yprime.mexw32" 
             File link directive =  
             Lib. link directive =  
             Rsp file indicator  = @ 
    ->    Resource Compiler      = rc /fo "mexversion.res" 
    ->    Resource Linker        =  
    ---------------------------------------------------------------- 
     
     
    --> "cl  -c -Zp8 -G5 -GR -W3 -DMATLAB_MEX_FILE -nologo /FoC:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\yprime.obj -ID:\APPLIC~1\R2006b\extern\include -ID:\APPLIC~1\R2006b\simulink\include /MD -O2 -Oy- -DNDEBUG -DMX_COMPAT_32 yprime.c" 
     
    yprime.c 
        Contents of C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\mex_tmp.rsp: 
      C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\yprime.obj 
     
     
    --> "link /out:"yprime.mexw32" /dll /export:mexFunction /MAP /LIBPATH:"D:\APPLIC~1\R2006b\extern\lib\win32\microsoft" libmx.lib libmex.lib libmat.lib /implib:C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\templib.x /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib  @C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\mex_tmp.rsp  " 
     
    Microsoft (R) Incremental Linker Version 7.10.3077 
    Copyright (C) Microsoft Corporation.  All rights reserved. 
     
    C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\yprime.obj  
       Creating library C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\templib.x and object C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\templib.exp 
     
    --> "del "yprime.map"" 
     
     
    --> "del C:\WINNT\Profiles\LOCALS~1\Temp\mex_D76241A0-59D6-4EE0-9293-987A28E7683D\templib.x"
    Hope it helps!

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

Discussions similaires

  1. Passer un tableau en option de ligne de commande
    Par david06600 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 10/12/2008, 13h38
  2. Options à passer à gcc
    Par corrector dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 20/03/2008, 22h33
  3. Passer le focus à une option d'un select multiple
    Par baoulox dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/02/2008, 17h04
  4. Réponses: 2
    Dernier message: 05/04/2007, 13h55
  5. Réponses: 4
    Dernier message: 16/02/2007, 11h51

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