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 :

Erreur Memory windows => SQLHANDLE


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut Erreur Memory windows => SQLHANDLE
    Bonjour à tous !

    Je suis un débutant dans la programmation C (un peu moins d'un an).
    Jusqu'a peu de temps je développais des petits binaires sous Unix.

    Il y a à peu près une semaine on m'a demandé de redévelopper quelques binaires sous windows.

    Et là, rien ne va plus.
    Je vous explique mon problème (j'ai posté aussi sur le forum DB2 mais on ne sait jamais).

    Je tente de lire des tables sur une base de données (DB2). Pour ce faire j'utilise des programmes d'exemples fournis par IBM.

    La compilation se passe correctement (j'utilise Dev C++). Tous les includes, les lib sont correctement linkés.

    Le problème c'est qu'à l'execution de mon programme windows me sort une erreur mémoire, la voici :

    The instruction at "0x80000049" referenced memory at "0X80000049". The memory could not be "read".

    J'ai essayé de voir ou cela buggais. J'ai à peu près trouver la fonction en erreur, voici le code :

    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
    int CLIAppInit(char dbAlias[],
                   char user[],
                   char pswd[],
                   SQLHANDLE *pHenv,
                   SQLHANDLE *pHdbc,
                   SQLPOINTER autocommitValue)
    {
      SQLRETURN cliRC = SQL_SUCCESS;
      int rc = 0;
     
      printf("INIT CLIAPPInit");
      /* allocate an environment handle */
      cliRC = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, pHenv);
      if (cliRC != SQL_SUCCESS)
      {
        printf("\n--ERROR while allocating the environment handle.\n");
        printf("  cliRC             = %d\n", cliRC);
        printf("  line              = %d\n", __LINE__);
        printf("  file              = %s\n", __FILE__);
        return 1;
     
      }
    J'ai par la suite commenté cette fonction. Après recompilation et execution windows me lache la même erreur dans une fonction différente.

    Je me demande donc d'ou le probleme peut venir.

    Voici l'appel de la fonction dans mon main :

    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
    char dbAlias[SQL_MAX_DSN_LENGTH + 1];
      char user[MAX_UID_LENGTH + 1];
      char pswd[MAX_PWD_LENGTH + 1];
     
      /* check the command line arguments */
      rc = CmdLineArgsCheck1(argc, argv, dbAlias, user, pswd);
      if (rc != 0)
      {
        return rc;
      }
     
      printf("\nTHIS SAMPLE SHOWS HOW TO READ DATA FROM TABLES.\n");
     
      /* initialize the application by calling a helper
         utility function defined in utilcli.c */
      rc = CLIAppInit(dbAlias,
                      user,
                      pswd,
                      &henv,
                      &hdbc,
                      (SQLPOINTER)SQL_AUTOCOMMIT_ON);
      if (rc != 0)
      {
        return rc;
      }
    Une idée ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    L'appel de ton SQLAllocHandle() semble correct. Je dirai que si cela crash à cet endroit, c'est que ton code ailleurs a déjà foutu le bazard dans la mémoire.

    Il faut chercher et debugger.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    J'ai fait des printf pour savoir ce que je passais a SQLAllocHandle, voici le résutlat :

    pHenv : $x
    SQL_HANDLE_ENV : 1
    SQL_NULL_HANDLE : 0

    Par contre, je ne vois pas comment je peux mettre le bazar dans la mémoire avant, vu le peu de code qu'il y a :

    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
     
    /*******************************************************************
    ** main
    *******************************************************************/
    int main(int argc, char *argv[])
    {
      SQLRETURN cliRC = SQL_SUCCESS;
      int rc = 0;
      SQLHANDLE henv; /* environment handle */
      SQLHANDLE hdbc; /* connection handles */
     
      char dbAlias[SQL_MAX_DSN_LENGTH + 1];
      char user[MAX_UID_LENGTH + 1];
      char pswd[MAX_PWD_LENGTH + 1];
     
      /* check the command line arguments */
      /*rc = CmdLineArgsCheck1(argc, argv, dbAlias, user, pswd);
      if (rc != 0)
      {
        return rc;
      }*/
     
      printf("\nTHIS SAMPLE SHOWS HOW TO READ DATA FROM TABLES.\n");
     
      /* initialize the application by calling a helper
         utility function defined in utilcli.c */
      rc = CLIAppInit(dbAlias,
                      user,
                      pswd,
                      &henv,
                      &hdbc,
                      (SQLPOINTER)SQL_AUTOCOMMIT_ON);
    J'ai commenté la fonction CmdLineArgsCheck1, mais que je commente ou pas c'est le même problème.

    Ce que je remarque par ailleurs, c'est que mon SQLHANDLE henv n'est jamais initialisé.
    Sachant que le SQLHANDLE est défini en tant que SQLINTEGER soit un int...

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À en juger par le message d'erreur, on dirait que le programme essaie d'exécuter du code à une adresse complètement invalide. En clair, c'est le pointeur d'instruction (aussi appelé compteur programme) qui est corrompu.

    Ce qui arrive généralement dans le cas d'un débordement de buffer sur la pile: Si l'adresse de retour est écrasée, c'est cette nouvelle valeur qui se retrouve dans le pointeur d'instruction (ce qui en fait un vecteur d'attaque connu pour les pirates informatiques).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    À en juger par le message d'erreur, on dirait que le programme essaie d'exécuter du code à une adresse complètement invalide. En clair, c'est le pointeur d'instruction (aussi appelé compteur programme) qui est corrompu.

    Ce qui arrive généralement dans le cas d'un débordement de buffer sur la pile: Si l'adresse de retour est écrasée, c'est cette nouvelle valeur qui se retrouve dans le pointeur d'instruction (ce qui en fait un vecteur d'attaque connu pour les pirates informatiques).
    Je ne comprend pas très bien ce que tu essaye de m'expliquer
    Ce que moi j'ai compris et ce que j'en tire comme explication :

    Il y a un SQLHANDLE défini mais pas initialisé. Je l'envoi dans une fonction qui permet d'allouer un HANDLE (SQLAllocHandle). Malheureusement cette allocation de HANDLE essayer de se faire sur une adresse invalide. Donc pas d'allocation et windows ne se cache pas pour me le faire savoir.

    Pourtant ce code provient de IBM, je doute qu'il soit buggé, mais je ne comprend pas pourquoi cette allocation ne se fait pas correctement. Au vu du code du main que j'ai copier au dessus, je ne vois pas comment j'influs sur cette tentative d'allocation...sa devient très compliqué cette histoire, j'ai peur que cela commence à me dépasser

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je pensais surtout à des problèmes autour de dbalias, user, pswd...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je pensais surtout à des problèmes autour de dbalias, user, pswd...
    Le bug se déclenche lors de l'appel à cette fonction :

    cliRC = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, pHenv);

    dbalias, user, pswd ne sont utilisés et initialisés (j'ai commenté la fonction CmdLineArgsCheck1 pour tester au cas ou mais j'ai aussi testé en les initialisant avec la fonction donc avant l'utilisation de la fonction) qu'après cette fonction. J'ai du mal à voir comment ces variables peuvent influer.

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Petit up !

    Sa se précise. Apparement Windows bloque au moment de l'allocation du HANDLE.
    C'est donc bien au niveau de la fonction SQLAllocHandle que cela bloque.

    Ce programme marche correctement sur UNIX. Il doit forcement y avoir un truc pour que cela fonctionne sous windows. Autorisé quelque chose soit au niveau de windows ou de DB2...je ne sais pas

    des idées supplémentaires ?

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je ne comprend vraiment pas la cause de ton problème. Je te propose le petit programme de test suivant, compile le et dit nous ce qu'il fait.

    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
     
    int main(int argc, char *argv[])
    {
      /* allocate an environment handle */
    SQLHANDLE henv; /* environment handle */
      SQLRETURN cliRC = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
      if(cliRC != SQL_SUCCESS)
      {
        printf("\n--ERROR while allocating the environment handle.\n");
        printf("  cliRC             = %d\n", cliRC);
        printf("  line              = %d\n", __LINE__);
        printf("  file              = %s\n", __FILE__);
        return 1;
     
      }
        printf("OK\n");
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    ATTENTION :
    Citation Envoyé par Returns
    SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_INVALID_HANDLE, or SQL_ERROR.

    When allocating a handle other than an environment handle, if SQLAllocHandle returns SQL_ERROR, it sets OutputHandlePtr to SQL_NULL_HDBC, SQL_NULL_HSTMT, or SQL_NULL_HDESC, depending on the value of HandleType, unless the output argument is a null pointer. The application can then obtain additional information from the diagnostic data structure associated with the handle in the InputHandle argument.
    La fonction SQLAllocHandle peut retourner SQL_SUCCESS ou SQL_SUCCESS_WITH_INFO en cas de réussite.

    le test devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if( (ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO) )
    {
       // traitement d'erreur
       return false;
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Ce petit programme compil parfaitement mais à l'execution : toujours la même erreur :

    The instruction at "0x80000514" referenced memory at "0X80000514". The memory could not be "read". (juste le numéro change).

    La fonction SQLAllocHandle ne me renvoi rien, sa bug avant
    Au moment ou je fais appel à cette fonction, windows me sort une petite pop-up avec l'erreur et l'execution s'arrete net !

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Alors, je me demande si tu n'as pas un problème ailleurs avec tes librairies/dll ODBC.

    Avec quoi tu link ton programme (quelle librairies et dans quel répertoire) ?

    Peut être un problème d'install ou de DLL corrompues ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  13. #13
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Je travaille avec Dev C++

    Alors dans option du projet :
    Dans l'onglet paramètres puis Editeur de liens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    db2/SQLLIB/lib/db2api.lib
    db2/SQLLIB/lib/db2apie.lib
    db2/SQLLIB/lib/db2cli.lib
    db2/SQLLIB/lib/db2psmd.lib
    db2/SQLLIB/lib/db2qg.lib
    db2/SQLLIB/lib/db2qgstp.lib
    Dans l'onglet repertoire puis repertoire d'inclusion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    db2\SQLLIB\include
    C:\Dev-Cpp\include
    Dans ma log de compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Compilateur: Default compiler
    Building Makefile: "C:\Documents and Settings\u297242\Desktop\SQL_DB2\Makefile.win"
    Exécution de  make clean
    rm -f obj/utilcli.o obj/main.o  bin/SQL_DB2.exe
     
    g++.exe -c utilcli.c -o obj/utilcli.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"C:/palette/apl/db2/SQLLIB/include"  -I"I:/DB2_Interface/include"  -I"C:/Dev-Cpp/include"    -traditional-cpp -fmessage-length=0
     
    g++.exe -c main.cpp -o obj/main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"C:/palette/apl/db2/SQLLIB/include"  -I"I:/DB2_Interface/include"  -I"C:/Dev-Cpp/include"    -traditional-cpp -fmessage-length=0
     
    g++.exe obj/utilcli.o obj/main.o  -o "bin\SQL_DB2.exe" -L"C:/Dev-Cpp/lib"  ../../../../palette/apl/db2/SQLLIB/lib/db2api.lib ../../../../palette/apl/db2/SQLLIB/lib/db2apie.lib ../../../../palette/apl/db2/SQLLIB/lib/db2cli.lib ../../../../palette/apl/db2/SQLLIB/lib/db2psmd.lib ../../../../palette/apl/db2/SQLLIB/lib/db2qg.lib ../../../../palette/apl/db2/SQLLIB/lib/db2qgstp.lib  -fmessage-length=0 
     
    Exécution terminée
    Compilation OK
    Dans mon projet C voici les fichiers :
    main.cpp
    utilapi.h
    utilcli.c
    utilcli.h
    utilemb.h


    Si sa peux aider à trouver une solution

  14. #14
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Ce qui me gène dans ta réponse c'est que je ne voie par de link avec odbc32.lib qui est la librairie de gestion ODBC de Microsoft.

    Sur le binaire que tu génère (et qui se crash) est ce que tu peux mettre un coup de DependencyWalker afin de voir quelle DLL il utilise.

    Une chose est sûre, SQLAllocHandle() devrait être implémenté dans Odbc32.dll mais est ce que tu utilises la DLL standard (dans c:\windows\system32) ou bien une DLL exotique
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  15. #15
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Alors, avec Dépendency Walker aucune erreur, à part un Warning :

    Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

    Sinon voici les DLL utilisées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    KERNEL32.DLL
    MSVCRT.DLL
    MSVCRT.DLL
    DB2APP.DLL
    DB2SYS.DLL
    Sinon je ne link mon programme avec aucune DLL. Je ne sais pas ou le faire avec Dev C++. Par contre je copie les DLL dans le dossier directement ou se situe mon executable.

    Dans le Dossier j'ai :

    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
    APPHELP.DLL
    db2app.dll
    db2dascmn.dll
    db2g11n.dll
    db2genreg.dll
    db2install.dll
    db2locale.dll
    db2osse.dll
    db2osse_db2.dll
    db2sec.dll
    db2sys.dll
    db2sysp.dll
    db2trcapi.dll
    db2wint.dll
    SQL_DB2.exe
    odbc32.dll

  16. #16
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Le odbc32.dll que tu as dans ton dossier, c'est lequel (version, date, taille, ...), il vient d'où, ...

    Est-ce que c'est le même que celui que tu as dans le système (dans c:\windows\system32 sur mon XP)

    Fait un test en supprimant ce fichier (ou tout au moins en le renommant et en supprimant son extension dll)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  17. #17
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ram_0000 Voir le message
    Le odbc32.dll que tu as dans ton dossier, c'est lequel (version, date, taille, ...), il vient d'où, ...

    Est-ce que c'est le même que celui que tu as dans le système (dans c:\windows\system32 sur mon XP)

    Fait un test en supprimant ce fichier (ou tout au moins en le renommant et en supprimant son extension dll)
    Cette DLL vient du system32 (j'ai win 2000 pro). Je l'ai juste copié.

    Je l'ai supprimé pour essayer mais sa n'a rien changé

  18. #18
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 42
    Points
    42
    Par défaut Je déterre
    Bonjour

    je sais pas si il faut que je crée un autre sujet pour ça mais j'ai le même problème donc je fais un petit up...

    le programme se lance puis j'ai le droit à une magnifique erreur C0000005 je sais pas du tout quoi faire

    PS : pourquoi la programmation sous windows est si problématique sous linux aucun pb...

    Merci

  19. #19
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Lance ton programme dans le debugger, regarde la pile d'appels, etc.

    Et essaie Visual C++ Express, qui a un meilleur debugger que Dev-C++.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 33
    Points : 42
    Points
    42
    Par défaut
    Bonjour merci d'avoir répondu

    J'ai fait un test avec ça...

    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
    #include <windows.h> /* A inclure uniquement sous Windows */
    #include <sql.h>     /* API ODBC de base                  */
    #include <sqlext.h>  /* Fonctions propres a ODBC 3.x      */
     
    int main()
    {
        SQLHENV env;
     
        if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env)) )
            /* SQLAllocHandle a echoue */ ;
        else
        {
            /* On continue */
     
            SQLFreeHandle(SQL_HANDLE_ENV, env);
        }
     
        return 0;
    }
    sous VS 2008 pas de problème sa marche impec'
    Mais sous code::blocks il veut rien savoir il me met l'erreur dès le début

    Suite à quoi je me dit "héhé m'en fous je vais dev sous VS ^^ "

    Mais pas de chance l'autre parti de mon programme ne fonctionne pas sous VS j'ai un problème de librairie (qui sont pourtant inclues...)

    D'où ma question : Comment faire lorsque vous avez un programme dont une partie marche sous Code::blocks et l'autre marche sous VS 2008 ???

    Need Help

    Merci

Discussions similaires

  1. [mono] Compilation sous linux, erreur dans windows
    Par AlexandreP dans le forum Mono
    Réponses: 6
    Dernier message: 18/08/2006, 19h56
  2. Réponses: 4
    Dernier message: 09/08/2006, 22h28
  3. comment exploiter les codes d'erreurs sous windows xp?
    Par lejum2005 dans le forum Windows XP
    Réponses: 4
    Dernier message: 03/03/2006, 17h26
  4. Erreur fichier"\windows\system32\config\system" in
    Par mzt.insat dans le forum Windows XP
    Réponses: 3
    Dernier message: 22/02/2006, 10h30
  5. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13

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