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 :

Connexion MySQL gcc


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut Connexion MySQL gcc
    Bonjour, je suis actuellement sous Windows (environnement y oblige), et je dois confectionner un programme se connectant à une base de donnée.

    Celà fait maintenant quelques jours que je n'y arrive pas et je commence a désespérer.

    Je possède pour sa:
    - un dossier MYSQL avec des headers
    - libmysql.dll
    - libmysqlclient.a
    - main.c

    J'essaie tant bien que mal de compiler mais rien.

    Voici entre autre ce que j'essaie de faire

    gcc -o mysql.exe main.c

    gcc -o mysql.exe main.c -LD:\mysql_test\MYSQL

    gcc -o mysql.exe main.c -LD:\mysql_test\MYSQL -lmysqlclient

    Dans mon fichier c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <mysql/mysql.h>
    Que faire ? merci de votre aide

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pourrait-on avoir un fichier C un peu plus complet et le message d'erreur du compilateur ?

    C'est une obligation de faire ce programme en C ?

  3. #3
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut
    Bonjour,


    voilà mon code en question
    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
    33
    34
    35
    36
    37
    38
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <MYSQL/mysql.h>
     
     
     
    int main(void){
        MYSQL mysql;
        mysql_init(&mysql);
     
        mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
     
        if(mysql_real_connect(&mysql,"localhost","root","root","mytest",0,NULL,0)) {
            mysql_query(&mysql, "SELECT * FROM test");
            //Déclaration des objets
            MYSQL_RES *result = NULL;
            MYSQL_ROW row;
            int i = 1;
     
    		//aff
            result = mysql_use_result(&mysql);
            while ((row = mysql_fetch_row(result))) {
               printf("Result %ld\n", i);
               i++;
            }
     
            mysql_free_result(result);
            mysql_close(&mysql);
        }
        else {
            printf("Une erreur s'est produite lors de la connexion à la BDD!");
        }
     
        return 0;
    }
    Je suis obligé de le dev en C. L'erreur affichée est:
    main.c:4:25: fatal error: MYSQL/mysql.h: No such file or directory
    compilation terminated

    Et pourtant, le fichier exite bien


    EDIT:

    J'ai finalement trouvé, rajouter -I pour spéficier le chemin du dossier mysql (je croyais qu'il le détectait si il était dans le même répertoire).

    Cependant, j'ai comme erreur maintenant
    Undefined reference to 'mysql_init"

    Et j'ai ceci pour toutes les fonctions de mysql. Ai-je oublié d'include quelque chose ?

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Par ailleurs, ton -LD me parait bizarre.
    Je connais -L (chemin de link) et -D (#define)

    Les options classiques de gcc sont:
    • -std= pour les variantes du langage (dont -std=C11),
    • -ltruc utiliser libtruc,
    • -Lpath utiliser (aussi) le chemin path pour chercher les bibliothèques,
    • -Ipath utiliser (aussi) le chemin path pour chercher les #include,
    • -DTRUC et -DTRUC=2 équivalent de #define TRUC et #define TRUC 2,
    • -Wall activer tous les warnings,
    • -Wextra d'autres warnings,
    • -Werror ne pas produire de binaire quand il y a un warning,
    • -g conserver les symboles de débug,
    • -O2 optimisation niveau 2 tout ce qui améliore le temps sans contrepartie en espace


    Un warning est une erreur possible, mais pas forcément fausse dans le cas présent.

    Je recommande personnellement de systématiquement compiler avec -Wall -Wextra, et de considérer chaque warning comme une probable faute.
    La solution d'un warning n'étant jamais d'ajouter un cast, mais de corriger le problème en amont.

    Normalement, en corrigeant un warning quelque part, il y en a d'autre qui deviennent détectables. C'est normal, et à corriger aussi.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut
    Le LD en fait, c'est seulement le L, le reste c'était censé être le chemin.
    -LD:\ -> -L"D:\"

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Ah, oui, j'avais oublié.
    Du coup, il faut peut-être prévoir des guillemets autour des chemins, j'ai peur que les \ soit interprétés par le shell.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Janvier 2013
    Messages : 79
    Points : 70
    Points
    70
    Par défaut
    Là actuellement j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o mysql.exe main.c -I"D:\CGI\mysql"

    et ça fonctionne, cependant, il me dit pour toutes les fonctions mysql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    undefined reference to 'mysql_init'
    undefined reference to 'mysql_options'
    ...

    EDIT: MERCI, j'avais oublié la lib mysql.

    Cependant j'ai une erreur code maintenant le programme se connecte mais plante. A voir

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Et bien, sans nous montrer de code, on ne pourra pas t'aider.
    Auquel cas, si le sujet ne concerne que le problème de compilation, marque le en résolu, avec le bouton en bas
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

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

Discussions similaires

  1. [JSP] erreur lors d'une connexion à mySQL
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2004, 16h48
  2. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28
  3. Connexion mysql
    Par olive.m dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 18/06/2004, 17h44
  4. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

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