Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Connessione a DB mysql

    codice:
     
    
    #include <stdio.h>
    
    #include "mysql/mysql.h"
    
    
    MYSQL *mysql = NULL;
    
    int main(int argc, char* argv[])
    {
      printf("Iniziamo la connessione al db\n");
    
    
    	// Inizializza il database
    	if ((mysql = mysql_init(NULL)) != NULL)
    	{
    		// Si connette al database
    		if (mysql_real_connect(mysql, "localhost", "prova", "prova", "prova", 0, NULL, 0) == NULL)
    			printf ("%s\n", mysql_error(mysql));
    
    	}
    
    
    	mysql_close(mysql);
    	return 0;
    }
    Ho preso in mano del codice e lo sto analizzando per capirlo.
    Per la connessione al db mysql fa così

    Ma se lo compilo
    codice:
     
    
    $ g++ connect.cpp -o connect
    /home/bonzo/tmp/ccoX9N8f.o: In function `main':
    connect.cpp:(.text+0x45): undefined reference to `mysql_init'
    connect.cpp:(.text+0x9d): undefined reference to `mysql_real_connect'
    connect.cpp:(.text+0xb3): undefined reference to `mysql_error'
    connect.cpp:(.text+0xc8): undefined reference to `mysql_close'
    collect2: ld returned 1 exit status
    Cosa non va?
    il codice è utilizzato e funziona, quindi probabilmente mi manca qualcosa.

  2. #2
    Ha messo le faccine al posto di
    : (
    senza gli spazi

  3. #3
    non basta includere gli header occorre anche linkare la relativa libreria.
    ciao
    sergio

  4. #4
    g++ -o connect -L/usr/lib/mysql -lmysqlclient connect.cpp


    Se compilo così non mi da l'errore

  5. #5
    sì, è giusto, con l'opzione -L gli dici dove si trova la directory delle librerie e con l'opzione -l gli dici quale libreria vuoi che sia lincata.
    aggiungi un po' di codice che ti dia un output. Ricordati che gli errori di mysql li devi gestire tu, la funzione mi sembra che ti esce con -1 (controllalo) e l'errore lo leggi con l'apposita funzione (mi sembra mysql_error, ma non sono sicuro).
    ciao
    sergio

  6. #6
    Il codice che mi dia output lo avevo tolto nel post.

    Grazie della spiegazione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.