probleme avec un mysql
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

probleme avec un mysql



  1. #1
    invite83a2356f

    probleme avec un mysql


    ------

    bonjour sur un de mes programmes code blocks j'ai tout le temps ce message d'erreurs " undefined reference to `mysql_init@4 " je ne comprends pas pourquoi voici mon programme :
    Code:
    // Projet Solstice - Insertion des fichiers CSV en base de données SQL //
    // Auteurs : Adrien Caroulle - M2GR2E 2011/2012
    //           Julien Chlebicki - M2GR2E 2011/2012
    // Date de création : 31 Janvier 2012
    // Date de modification : 9 février 2012
    /*************************************************************************************************************************************/
    //Déclaration des bibliothèques
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <windows.h>
    #include <string.h>
    #include <time.h>
    #include <winsock.h>
    #include <MYSQL/mysql.h>
    #include <sys/types.h>
    #include <dirent.h>
    /*************************************************************************************************************************************/
    MYSQL *mysql = NULL;
    struct dirent *lecture;
    DIR *rep;
    int whinf =1 ;
    
    int cpt, ligne, cpt1, nbl, colonne1[1000], colonne2[1000], colonne3[1000], colonne4[1000], colonne5[1000], colonne6[1000], colonne7[1000], colonne8[1000];
    
    
    char donnees[],dat[], date[], bdd1[100], bdd2[100], date[],test[], nomcsv[100],arboenattente[100], archive[50];
    
    /*************************************************************************************************************************************/
    
     int main(){
    
    while(whinf == 1){
    
    rep = opendir("C:\\Documents and Settings\\solstice\\Bureau\\RESULTATS\\en_attente");
    
    // Scanne du dossier parent
    while ((lecture = readdir(rep))){
        strcpy(nomcsv,lecture->d_name);
    
    
        // Recherche d'un nom valide de fichier csv
        if ((strcmp(nomcsv,".")==1)&&(strcmp(nomcsv,"..")==1)){
    
            printf("Fichier csv trouve : %s\n\n", nomcsv);
            sprintf(arboenattente,"C:\\Documents and Settings\\solstice\\Bureau\\RESULTATS\\en_attente\\%s",nomcsv);
    
            // Lecture du fichier csv
            FILE *fichier = NULL;
            fichier = fopen (arboenattente,"r");
            if (fichier == NULL){
                printf ("Erreur a l'ouverture du fichier\n");
                nbl = 0;}
            else{
                printf ("Fichier ouvert\n\n");
                cpt = 0;
                sprintf(date,"");
    
    
                // Recuperation des mesures du fichier csv
                while (fscanf(fichier,"%s",donnees)!=EOF){
                    cpt++;
    
                    sprintf(date,"%s%s",date,donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne1[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne2[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne3[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne4[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne5[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne6[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne7[cpt] = atoi(donnees);
    
                    fscanf(fichier,"%s",donnees);
                    colonne8[cpt] = atoi(donnees);}
                nbl = cpt;
    
                fclose(fichier);}
    
            // Ecriture dans la base de données
            cpt = 1;
            ligne = 0;
    
            while ((cpt <= nbl)&&(nbl != 0)){
                if (cpt == 1){
                 printf("Copie %s en base de donnees en cours ..... \n", nomcsv);}
    
                // Fabrication commande de transfert en base de donnees
                cpt1 = 0;
                sprintf(dat,"");
                while (cpt1 < 14){
                    sprintf(dat,"%s%c", dat, date[cpt1+ligne]);
                    cpt1++;}
                ligne = ligne + 14;
                sprintf(bdd1,"INSERT INTO `module1`(`Date`,`Courant 1`,`Courant 2`,`Courant 3`,`Courant 4`) VALUES ('%s','%d','%d','%d','%d')", dat, colonne1[cpt], colonne2[cpt], colonne3[cpt], colonne4[cpt]);
                sprintf(bdd2,"INSERT INTO `module2`(`Date`,`Tension`,`temperature`,`Vitesse_vent`,`Ensoleillement`) VALUES ('%s','%d','%d','%d','%d')", dat, colonne5[cpt], colonne6[cpt], colonne7[cpt], colonne8[cpt]);
    
                // Connection et écriture sur la base de donnees
    
               MYSQL mysql;
               mysql_init(&mysql);
               mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
                if(mysql_real_connect(&mysql,"localhost","root","","solsticebdd",0,NULL,0))
                    {
                    mysql_query(&mysql, bdd1);
                    mysql_query(&mysql, bdd2);
                    mysql_close(&mysql);
                    cpt++;
                    }
                else{
                    printf("Une erreur s'est produite lors de la connexion à la BDD!");}}
    
                printf("\nCopie de %s en base de donnees effectuee \n\n",nomcsv);
    
                // Archivage du fichier csv
                sprintf(archive,"C:\\documentsolstice\\RESULTATS\\CSV_traites\\%s",nomcsv);
    
                 if (rename(arboenattente,archive)!=0){
                     printf(" !!! Erreur d'archivage !!! \n\n\n");
                     }
                 else{
                     printf("Fichier archive avec succes\n\n\n");}}
    
        else{
            printf("Recherche d'un fichier csv valide en cours..... \n\n");
            Sleep (2000);}}}
    
    
    
    
    
    
    
     printf("\n***************FIN PROGRAMME****************\n\n\n");
    
     return 0;}

    -----
    Dernière modification par Jack ; 23/04/2015 à 18h21. Motif: Balises code

  2. #2
    Jack
    Modérateur

    Re : probleme avec un mysql

    Merci de lire et respecter les règles de ce forum: le code doit être placé entre des balises code

  3. #3
    invite0bbe92c0

    Re : probleme avec un mysql

    Erreur de compilation ou d'exécution ?

    Quelle ligne lève l'erreur ?

  4. #4
    invite83a2356f

    Re : probleme avec un mysql

    <<\CSVtoBDD\main.o:main.c|| undefined reference to `mysql_init@4'|
    \CSVtoBDD\main.o:main.c|| undefined reference to `mysql_options@12'|
    \CSVtoBDD\main.o:main.c|| undefined reference to `mysql_query@8'|
    \CSVtoBDD\main.o:main.c|| undefined reference to `mysql_query@8'|
    \CSVtoBDD\main.o:main.c|| undefined reference to `mysql_close@4'|
    ||=== Build failed: 6 error(s), 4 warning(s) (0 minute(s), 0 second(s)) ===|
    >>

    voila mes erreurs c'est quand je compile il me mets ceci et je ne sais pas pourquoi

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : probleme avec un mysql

    Je ne sais pas trop comment ça se présente, mais en admettant que tu utilises une librairie assortie d'un fichier d'entête, mysql.h en l'occurrence, les as-tu correctement installés?

  7. #6
    invite0bbe92c0

    Re : probleme avec un mysql

    Citation Envoyé par Jack Voir le message
    Je ne sais pas trop comment ça se présente, mais en admettant que tu utilises une librairie assortie d'un fichier d'entête, mysql.h en l'occurrence, les as-tu correctement installés?
    Il a bien un include mysql.h mais je soupçonne que le fichier .lib associé n'est pas fournit au linker (bon, ça fait plus de 10 ans que j'ai pas fait de C, donc mes souvenirs sont quelque peu imprécis).

  8. #7
    Jack
    Modérateur

    Re : probleme avec un mysql

    Tout à fait. C'est le "#include <MYSQL/mysql.h>" qui me fait justement penser à une installation incorrecte.

    Le fichier d'entête a l'air d'être présent car le compilateur n'a rien dit. En revanche, le linker a l'air de chercher le code dans la lib sans le trouver
    Dernière modification par Jack ; 24/04/2015 à 11h03.

  9. #8
    invite83a2356f

    Re : probleme avec un mysql

    et donc comment je fais pour linker ?

  10. #9
    Jack
    Modérateur

    Re : probleme avec un mysql

    Citation Envoyé par soso590230 Voir le message
    et donc comment je fais pour linker ?
    On ne sait pas sous quel os tu travailles, ni le compilateur utilisé, ni comment tu as installé la librairie.

    D'après ce que je vois, le seul renseignement que tu as donné, c'est que tu travailles avec code::blocks que je ne connais pas sur le bout des ongles. Il faudrait que tu cherches quelles options de C::B tu dois modifier pour faire reconnaître ta librairie externe, tout ceci pour faire générer la bonne ligne de commande pour la génération de l'exécutable.

    PS: vu les fichiers d'entête, j'en déduis que c'est sous windows.
    Dernière modification par Jack ; 24/04/2015 à 16h54.

  11. #10
    inviteb6b93040

    Re : probleme avec un mysql

    Sur le site du 0 c'est accessible

    Code::blocks

    Tout d'abord, je vous ai préparé un petit fichier compressé avec tout ce que vous allez avoir besoin pour l'installation.

    Télécharger le ZIP (766 Ko)

    Vous y trouverez :

    le fichier libmysql.dll, que vous mettrez dans le dossier de tous vos programmes utilisant l'API MySQL (comme vous le faite habituellement pour tous vos fichiers .dll) ;
    le fichier libmysqlclient.a, que vous mettrez dans le dossier lib du dossier mingw32 de Code::Blocks ;
    un dossier MYSQL où se trouvent tous les fichiers d'en-têtes dont vous pourrez avoir besoin. Copiez ce dossier et collez-le dans le dossier include du dossier mingw32 de Code::Blocks.
    Maintenant vous n'avez plus qu'à créer un nouveau projet, à ajouter le fichier .dll dans le répertoire de celui-ci et à lier le fichier libmysqlclient.a. Voilà, la bibliothèque est installée ; vous allez enfin pouvoir commencer à coder !

    Dev-C++

    Allez tout d'abord dans Aide puis cliquez sur A propos de Dev-C++.
    Une fenêtre apparaît ; cliquez sur Nouvelle version.
    De là, sélectionnez le serveur devpack.org comunity devpacks puis cliquez sur Check for update.
    Dans groups, choisissez databases puis sélectionnez libmysql.
    Téléchargez-le.
    Allez dans les options du projet, onglet paramètres, case éditeur de liens et marquez -lmysql.

    VC

    Pour VC, il vous faut télécharger les fichiers d'en-têtes et les bibliothèques ici. Par la suite :

    placez les fichiers .h dans ../vc/include/mysql ;
    placez le fichier .lib dans ../vc/lib ;
    ajoutez libmysql.lib dans les options du projet /editeur de lien/entrée/dependence suplementaire ;
    ajoutez libmysql.dll dans le dossier du projet.
    http://openclassrooms.com/courses/ut...vos-programmes

Discussions similaires

  1. Page blanche avec MySql
    Par invite3f6cd517 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 23/03/2014, 14h27
  2. [Iphone] Carte avec geolocalisation et mysql pour pin... HELP !!!
    Par invite9689f6d6 dans le forum Programmation et langages, Algorithmique
    Réponses: 44
    Dernier message: 29/07/2012, 17h46
  3. test avec PHP MySQL
    Par SunnySky dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 18/02/2007, 03h18
  4. Cherche hébergeur gratuit avec MYSQL
    Par invite9f81250c dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 04/03/2005, 23h53