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

C++ Discussion :

[compatibilité C/C++]


Sujet :

C++

  1. #1
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut [compatibilité C/C++]
    Bonjour !

    Je sais que ce topic est à la mode, mais hélas c'est parfois de la magie pour moi...
    Je compile avec Code:Blocks (GCC), et je viens de récupérer un programme en C ainsi qu'une librairie (C je suppose) pour accéder à une base de données.
    La compilation et l'édition des liens fonctionne, aucuns retours de fonctions négatif (je pense au fameux -1), mais par contre tous les résultats que je récupère sont NULS ...
    La même chose avec VC6.0 (je sais c'est vieux) me lit parfaitement toutes mes données...
    Je retrousse mes manches, je me plonge dans le code (sous Code Blocks):
    *la fonction qui communique avec la BDD est déclaré extern dans le fichier .c (puisque présente dans la librairie je suppose). Le truc, c'est que, même en retirant le mot clef "extern", la compilation a toujours lieu...
    J'ai l'impression que l'édition des liens ne se fait pas?
    Est-ce le compilateur C++ qui ne fait pas son boulot sur du code C?
    Ou alors est-ce que je suis franchement mauvais??

    Je précise que je souhaite utiliser Code:Blocks parce que ce petit bout de code doit s'intégrer dans un plus gros programme à base de template (adieu VC6.0). Et je ne peux pas installer Express 2005 (du moins pas pour le moment, je n'aurai pas les droits administrateurs avant...) Et puis je souhaiterai continuer sur le même IDE...

    Merci à vous d'avance !

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Le débuggeur indique quoi comme différence d'exécution ?

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    A priori, il n'y a pas de différence d'execution. C'est à dire que les deux IDE semblent communiquer avec la base de données via TSRqParm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    extern  int TSRqParm ();
    // code omis
    cr = TSRqParm (nchoc, NmProd, NmObj, NmPar, LgPar, &Valeur, &NbVal , &format);
        if (cr != 0)
            {
            printf("Erreur lecture %s / %s\n",NmObj,NmPar);
            Str = "0";
            return(-1);
            }
    avec le débugger, aucun des deux IDE ne renvoi -1.

    Est-ce normal de compiler alors que j'ai supprimer le extern ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Si, il y a une différence Essaie d'aller plus loin dans les comparaisons entre les 2 exécutions.

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Si tu mets pas de extern "C" ça risque pas de marcher.
    Boost ftw

  6. #6
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Si tu mets pas de extern "C" ça risque pas de marcher.
    Oui, j'y avais pensé, mais dans ce projet, tous mes fichiers sources sont des .C
    Je n'ai donc normalement pas besoin de préciser!

    Si, il y a une différence
    tu as sans doute raison, je vais fouiller à fond!

    Merci...

  7. #7
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut Dll ???
    il y effectivement une différence d'éxecution:

    Sur ce bout de code (Qui est le début du programme):
    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
     
    short Init_Endoscope (long nchoc, short nEndo, struct_endoscope *Endoscope)
    {
        char  NmProd[8], NmObj[20], NmPar[20], PosCam[20];
        char  NmTypCam[20], TypINDIGO[] = "INDIGO";
        char  StrCamC3[] = "COUP C3", StrCamC2[] = "COUP C2";
        char  StrCamQ1[] = "FCI Q1", StrCamQ2[] = "FCI Q2", StrCamQ5[] = "FCI Q5";
        float Val;
        short nLUT, lLUT1, lLUT2, lLUT3, NumLUT, lDL, Zone, cr, i;
        long  xLUT1[MAXDATALUT], yLUT1[MAXDATALUT];
        long  xLUT2[MAXDATALUT], yLUT2[MAXDATALUT];
        long  xLUT3[MAXDATALUT], yLUT3[MAXDATALUT];
        float DL[MAXPTSLUT]       , TP[MAXPTSLUT];
        // ---------------------------------------------------------
        // Initialisation des variables
        // ---------------------------------------------------------
        strcpy(NmProd , "DCAMIR");
        sprintf(&NmPar[0],"CAM%i",nEndo);
        // ---------------------------------------------------------
        // Lecture des paramètres TOP
        // ---------------------------------------------------------
        // ----------> Lecture de la temperature du FUT
        strcpy(NmObj , "TEMP_FUT");
        cr = LitTopFloat(nchoc, NmProd, NmObj, NmPar, &Val);
        Endoscope -> Temp_Fut = Val;
    Avec VC6.0 Val vaut 25.0
    Avec Code::Blocks Val vaut 0.00

    La fonction LitTopFloat est fournie dans une librairie (un fichier dll et un fichier lib). J'ai l'impression que ça coince de ce coté là...

    Je suis preneur d'idées!

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pas de problème d'ouverture du fichier ?

  9. #9
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    hé bien non justement cr vaut 0 dans les deux IDE (le test d'ouverture est fait en interne dans la fonction LitTopFLoat :
    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
    short LitTopFloat(long nchoc, char *NmProd, char *NmObj, char *NmPar, float *Val)
    {
        long   cr, LgPar, NbVal;
        short  format;
        float  TelR;
        char  *Valeur = NULL;
        LgPar = 256;  // Nb max de valeurs à lire
        if (DEBUG_CALCAMIR == 1)
            printf("Appel à TSRqParm float  : ");
        cr = TSRqParm (nchoc, NmProd, NmObj, NmPar, LgPar, &Valeur, &NbVal , &format);
        if (cr != 0)
            {
            printf("Erreur lecture %s / %s\n",NmObj,NmPar); *Val = -1.;
            return(-1);
            }
        TelR = * (float *) Valeur; *Val = TelR;
        if (DEBUG_CALCAMIR == 1)
            printf("%12s;%12s;%12s-->%0.3f\n",NmProd, NmObj, NmPar, *Val);
         return(0);
    }
    Dans un cas, NbVal vaut 0 (Code::Blocks)
    Dans l'autre, il vaut 1.
    NbVal, c'est le nombre de valeurs du paramètres... 0 est donc une mauvaise chose!

    Merci Miles pour ton aide!
    Je vais continuer à chercher...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Bizarre...
    La dll a été compilée avec quoi ?

  11. #11
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    avec VC6.0 par un de mes collègues....
    Hum... Tu crois que c'est ça?

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Oui, il y a des chances que GCC ne puisse pas accéder correctement à la fonction.

  13. #13
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Alors il faut que je recompile cette lib moi même...

    Merci Miles

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

Discussions similaires

  1. Compatibilité D5 / VNC
    Par gord's dans le forum Outils
    Réponses: 7
    Dernier message: 12/05/2004, 17h02
  2. help!! problème de compatibilité ascendante
    Par valfredr dans le forum XMLRAD
    Réponses: 5
    Dernier message: 16/06/2003, 16h15
  3. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46
  4. Compatibilité Visibroker 4.5 C++ Builder
    Par manuel dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 21h57
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

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