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 :

Intégration du code C généré par la commande mcc


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Intégration du code C généré par la commande mcc
    Bonjour tout le monde

    J'ai un projet en C, et je doit utilisé une fonction matlab pour cela j'ai utilisé la commande mcc -l file.m , et le me genere un fichier .h et 2 fichiers .c et .lib j'ai cerer une fonction main qui fait appelle a la afonction crere sur matlab j'ai inclus la lib geberer et le fichier .h, le probleme que le fichiers .h fait appelle a une lib propre a matlab (mclmcr.h ) que le compilateur DEV C ++ n'arrive pas a la compiler j'ai des message d'eerur de ce type
    212 D:\3ilme\stage_fidi\MATLAB\mclmcr.h conflicting types for 'int32_t'
    31 C:\Dev-Cpp\include\stdint.h previous declaration of 'int32_t' was here
    31 C:\Dev-Cpp\include\stdint.h previous declaration of 'int32_t' was here

    NB

    j'ai essaie simplement d'executer une finction sous matlab qui calcul le carré c'est un exemple pedagogique publie sur internet

    Merci bien de m'aider

  2. #2
    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
    Hello,

    DevC++ n'est pas officiellement supporte par matlab.
    Ceci dit en bidouillant mclmcr.h tu arriveras probablement a tes fins. Note que je n'ai pas DevC++... mais a mon avis l'erreur vient du faire que int32_t sont definis differemment dans stdint.h et mclmcr.h. Si t'es sur windows 32 bits, int32_t devrait etre un typedef de int.

    Dans le fichier mclmcr.h:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifdef _WIN32
    #if ULONG_MAX == 0xffffffff 
    typedef long int32_t;
    #else
    typedef int int32_t;
    #endif
    #endif
    tu peux essayer de commenter cette partie et d'ajouter par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef int int32_t;
    Salutations,

    Gregoire

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Merci pour ta réponse, mais malheureusemnt ca fonctionne pas, j'ai commenté la zone que vous avez indiquer, et j'ai ajouté la ligne que vous avez renseigner mais je trouve qu'il ya une double declaration, puis j'ai supprimer cette ligne, et j'ai commenter autre ligne:

    //EXTERN_C int mclGetScalarInt64(void** ppv, mxInt64 re, mxInt64 im, mxComplexity cmplx);
    //EXTERN_C int mclGetScalarUint64(void** ppv, mxUint64 re, mxUint64 im, mxComplexity cmplx);

    puis j'ai compiler j'ai l'erreur suivant :

    1 [Linker error] undefined reference to `carre2'
    2 ld returned 1 exit status .

    je sais pas est ce que je dois inclure deux autres fichiers generer par matlab :

    carre2_main.c
    carre2_mcc_component_data.c

    dailleur j'ai essaie d'inclure le premier fichier, le probleme c'est qu'elle contient le main par consequent j'ai une erreur de double declaration main

    Merci pour votre aide

  4. #4
    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
    As-tu bien specifie au compilateur de lier avec ton fichier .lib (je suppose que la fonction carre2 est dedans..) ?

    Salutations,


    Greg

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui j'ai lié le .lib a l'aide de la commande
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib,"nom_fichier.lib")
    Mais franchement je ne sais pas est ce que c'est la bonne méthode ou pas
    Je l'ai trouvé dans un forum
    Merci infiniment pour tes réponses
    Cordialement.

  6. #6
    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
    je peux me tromper, mais je crois que ce pragma ne marche qu'avec Visual C++.
    essaye de fouiner dans les options de ton compilateur (Project Options - Directories - Library Directories, Project Options - Parameters - Linker)?

    Tu peux aussi essayer de verifier que la fonction est bien presente dans ta lib. avec l'utilitaire dumpbin (dumpbin /exports malib.lib)

    Salutations,

    Greg

    EDIT:

    pourquoi ne pas simplement utiliser Visual C++ ?

Discussions similaires

  1. Comment recupérer le code SQL généré par Hibernate !
    Par nebisse dans le forum Hibernate
    Réponses: 14
    Dernier message: 21/08/2008, 23h56
  2. Récupérer code html généré par une jsp
    Par axel119 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/09/2007, 16h17
  3. evenement onclick dans du code html généré par js
    Par gelko dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/11/2006, 09h24
  4. [MySQL] Récupérer Code HTML généré par PHP
    Par @ngelofdeath dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/04/2006, 21h51
  5. Réponses: 12
    Dernier message: 20/04/2006, 15h15

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