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 :

Chemin des fichiers (addpath non supportée) [Compiler]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut Chemin des fichiers (addpath non supportée)
    Bonjour à tous, me revoila pour une autre petite question...

    Je cherche à faire une application avec interface graphique compilable et utilisable sur n'importe quel PC. Le problème est que j'ai créé cette appli en indiquant les chemins des sous dossiers avec la méthode "addpath". Or surprise lorsque j'esaie de compiler, Matlab me retourne un message d'erreur disant que le compiler ne supporte pas la méthode "addpath".

    Voici le principe de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Racine=cd;
    sousdossier1=strcat(Racine,'\dossier1');
    addpath(sousdossier1);
    Connaitriez vous une autre méthode je pense par exemple à un fichier texte qui serait chargé et qui contiendrait les chemin en question, évidemment le but et que ceci marche une fois compilé...

    J'utilise MatLab 6 sous Windows

  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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    L'erreur intervient-elle à la compilation (avec MCC) ou à l'exécution du code compilé sur la même machine qui a servit à la compilation ?

    Montre nous le message d'erreur exact retourné par MATLAB...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour la réponse rapide.
    L'erreur intervient à la compilation ie lorsque j'execute la commande mcc. Et évidemment lorsque je lance le .exe rien ne marche....(je précise que je compile et j'execute sur la même machine)

    Voici l'erreur, je n'ai pas tous mis car auparavant il me dit qu'il ne connait aucune de mes variables ce qui est normale car elle se trouvent dans le fichier pour lequel il ne connait pas le chemin...

    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
     
    >> mcc -B sgl test.m
    Warning: File: c:\matlab6p5\toolbox\matlab\general\addpath.m Line: 49 Column: 10
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\addpath.m Line: 75 Column: 15
    The "system_dependent" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\addpath.m Line: 95 Column: 3
    The "system_dependent" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 32 Column: 7
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 41 Column: 5
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 48 Column: 10
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 55 Column: 25
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 57 Column: 25
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 112 Column: 9
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 114 Column: 9
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 116 Column: 9
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\general\path.m Line: 121 Column: 20
    The "matlabpath" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\iofun\textread.m Line: 158 Column: 80
    The "which" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    Warning: File: c:\matlab6p5\toolbox\matlab\iofun\textread.m Line: 159 Column: 19
    The "which" function is only available in MEX mode. A run-time error will occur if this code is executed in stand-alone mode.
    >>

    J'utilise MatLab 6 sous Windows

    Merci

  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
    Le principal est de savoir à quoi te servent tes ADDPATH :
    1. A pouvoir appeler depuis le programme principal d'autres fichiers m
    2. A pouvoir charger d'autre type de fichiers (MAT, FIG, ...) qui se trouvent dans d'autres répertoires

    Dans le cas 1 :
    La compilation va aussi compiler ces fichiers qui n'existeront donc plus.
    Ce qu'il faut faire :
    1.1. Modifier le fichier principale où apparaissent les addpath en faisant un traitement différent suivant si l'on est en mode compilé ou non.
    Pour cela on peut utiliser ISDEPLOYED mais je ne suis pas sur que cette commande existe en version 6, dans ce cas tu peux tenter un TRY-CATCH (c'est pas très propre mais bon j'attends ta réponse pour donner plus d'explications).
    1.2.
    - Soit ajouter les paths avant la compilation, pour que la compilation puisse trouver les fichiers
    - Soit donner dans la ligne de commande la liste des répertoires où il faut chercher (option -D je crois, la compilation ayant beaucoup changé entre les versions 6 et 7)

    Dans le cas 2 : ces fichiers devront être copiés dans l'unique répertoire de destination de l'exécutable. Il seront donc forcément connus sans leur donner de chemin.


    Pour la fonction TEXTREAD c'est plus gênant puisque c'est une fonction de MATLAB.
    Tu devrais l'éditer pour l'enresgitrer sous un nom à toi et pouvoir changer la ligne avec WHICH selon que tu es en mode compilé ou non.


    NB : pour ta versionvu le nom du répertoire il s'agit plus exactement de la version 6.5 (information que tu obtiens avec la commande VERSION).
    C'est une information très importante en particulier pour la compilation qui a connu de grands changements entre 6.1 et 6.5 et 7.x

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Pour les deux dernières erreurs relatives à TEXTREAD : Can I compile the TEXTREAD function with MATLAB Compiler 3.0 (R13)?

  6. #6
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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
    Points : 4 039
    Points
    4 039
    Par défaut
    J'avais posté un lien interessant à ce sujet dans une autre discussion

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    Re bonjour,

    Merci à vous deux.

    Pour répondre à Caroline je me situe en fait dans le cas 1 ie mon fichier principal fait appel à d'autres fichiers.m qui son en fait des fichiers contenant seulement des variables.

    La solution 1.2 m'a l'air pas mal pourrait tu détaillé un peu plus s'il te plait Caroline.


    J'utilise effectivement MatLab 6.5 sous Windows

  8. #8
    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
    Crées-toi un fichier pour la compilation qui reprend les commandes ADDPATH de ton fichier puis exécute la commende mcc.

    Sinon la documentation (http://www.mathworks.com/access/help...piler/mcc.html) explique qu'il faut utiliser l'option -I (et pas du tout -D, mes souvenirs me lâchent ).
    -I <directory> (Directory Path). Add a new directory path to the list of included directories. Each -I option adds a directory to the end of the current search path. For example,
    • -I <directory1> -I <directory2>

    would set up the search path so that directory1 is searched first for M-files, followed by directory2. This option is important for stand-alone compilation where the MATLAB path is not available.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    Merci à tous pour votre aide.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    J'ai peut etre une autre solution concernant ce pb...
    En fait il s'agirait simplement d'utiliser la commande cd.

    Mon pb avec cette methode et que j'aimerais faire le cd d'un chemin variable...

    Or il me renvoi l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error using ==> cd
    Name is nonexistent or not a directory.
    En fait l'erreur vient du fait que mon chemin en question n'est pas entres quotes comme ceci :
    Mais comme c'est une variable...
    J'ai essayé avec les crochets mais rien ne marche

  11. #11
    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
    Avec les parenthèses !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd chemin % essaye d'aller dans le répertoire nommé chemin
    cd(chemin)%essaye d'aller dans le répertoire dont le nom est contenu dans la variable chemin
    La 2ème façon d'écrire s'appelle la forme fonctionnelle (en tout cas c'est comme ça que moi je dis )

    Pour toutes les fonctions de MATLAB on peut utiliser les 2 formes.
    Mais la 2ème forme est toujours préférable.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    Merci de maider...

    Mais ça marche po

    Il me sort toujours la meme erreur pourtant ma variable chemin est obtenue par un strcat de deux chaines de caractères et quand j'appelle chemin dans mon .m il m'affiche clairement le chemin dans le prompt mais il n'y a pas de quotes... ça m'affiche : chemin=c:\....

    Une idée ?

  13. #13
    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
    Oui c'est normal qu'il enlève les quotes pour l'affichage.
    C'est quoi qui ne marche pas ?
    Quel est le code testé et le message d'erreur associé ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    j'ai testé
    et il me renvoie l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error using ==> cd
    Name is nonexistent or not a directory.
    -ma variable chemin est obtenue par un strcat de deux chaines de caractères

    Quand je teste avec une valeur particulière de ma variable par exemple la ça marche :

  15. #15
    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
    Ton dernier code (bien que pas très joli) peut fonctionner si le répertoire donné existe là où tu es.

    Pour le code précédent, ce n'est pas qu'il ne fonctionne pas, c'est qu'il te dit que le répertoire donné en paramètre n'existe pas.
    Donc regarde ce qu'il vaut et vérifie qu'il existe.
    Et essaye sans mettre d'espace entre cd et la parenthèse (normalement cela ne devrait rien changer mais sait-on jamais)

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 12
    Points
    12
    Par défaut
    En fait tu as raison ça marche le pb venait du fait que j'indiquais dans le cd le chemin complet à partir de C:..Matlab\work\.... or j'étais dénjà dans matlab\work donc en mettant :
    avec chemin partant pas du C:... mais directement de mon work ça marche !


    MERCIII

  17. #17
    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
    Citation Envoyé par robbi Voir le message
    le pb venait du fait que j'indiquais dans le cd le chemin complet à partir de C:..Matlab\work\.... or j'étais dénjà dans matlab\work
    Non le problème devait venir d'une erreur de frappe ou d'autre chose car si tu lui indiques le chemin complet ça fonctionne tout aussi bien.

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

Discussions similaires

  1. Empaquetage : modifier les chemins des fichiers inclus
    Par AndréPe dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 21/08/2008, 11h56
  2. java.util.zip chemin des fichiers dans l'archive ZIP
    Par Bubu017 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 15/04/2008, 17h36
  3. Chemin des fichiers et dossier
    Par kazylax dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/03/2008, 22h21
  4. Forcer téléchargement et chemin des fichiers
    Par nicolas.pissard dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2008, 14h54
  5. [VBA]Gestion des photos : modifier le chemin des fichiers
    Par alainGL dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/04/2007, 15h56

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