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 :
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.
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; }
Je me demande donc d'ou le probleme peut venir.
Voici l'appel de la fonction dans mon main :
Une idée ?
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; }
Partager