Avatar billede alex_sleiborg Nybegynder
17. november 2005 - 10:01 Der er 26 kommentarer og
2 løsninger

Connection til mysql db fra linux

Jeg skal have lavet en connection til en mysql database fra linux af.

Men jeg får en mærkelig compiler fejl.

/tmp/ccKPPAZQ.o(.eh_frame+0x11): undefined
collect2: ld returnerede afslutningskoden 1

Her er koden

#include <stdlib.h>
#include <stdio.h>


#include <mysql.h>

int main(int argc, char *argv[])
{
    MYSQL *conn_ptr;
   
    conn_ptr = mysql_init(NULL);
    if (!conn_ptr)
    {
        fprintf(stderr, "mysql_init failed\n");
        return EXIT_FAILURE;
    }
   
    conn_ptr = mysql_real_connect(conn_ptr, "192.168.72.172", "root", "kommet", "brugere", 0, NULL, 0);
   
    if (conn_ptr)
    {
        printf("Connection succes\n");
    }
    else
    {
        printf("Connection failed\n");
    }
   
    mysql_close(conn_ptr);
       
    return EXIT_SUCCESS;
}
Avatar billede arne_v Ekspert
17. november 2005 - 10:31 #1
hvordan ser din build kommando ud ?
Avatar billede alex_sleiborg Nybegynder
17. november 2005 - 12:04 #2
gcc -I/usr/include/mysql database.c -L/usr/lib/mysql -lmysqlclient -lz -o database.out
Avatar billede arne_v Ekspert
18. november 2005 - 22:57 #3
det ser jo umiddelbart OK ud

den skriver ikke hvad der er undefined ??
Avatar billede alex_sleiborg Nybegynder
19. november 2005 - 18:55 #4
Nej det skriver bare

/tmp/ccKPPAZQ.o(.eh_frame+0x11): undefined
collect2: ld returnerede afslutningskoden 1

når jeg forsøger og compile. Og jeg bruger bare gcc, jeg er ikke helt klar over hvilken version det er...
Avatar billede arne_v Ekspert
19. november 2005 - 20:15 #5
det ser meget rigtigt ud

suk
Avatar billede alex_sleiborg Nybegynder
19. november 2005 - 22:43 #6
Skulle jeg prøve med en anden compiler???

Lige et hurtigt side spørgsmål. Hva er nemmest og bruge når man laver grafiske programmer i c++ til linux. GTK+ eller QT?
Avatar billede arne_v Ekspert
19. november 2005 - 22:44 #7
på linux har du ikke andre muligheder end GCC

men du kunne altid prøve en update
Avatar billede arne_v Ekspert
19. november 2005 - 22:44 #8
jeg har aldrig brugt hverken QT eller GTK+
Avatar billede alex_sleiborg Nybegynder
19. november 2005 - 22:46 #9
Jeg prøver lige og skrive det i c++, og bruge g++ i stedet
Avatar billede arne_v Ekspert
19. november 2005 - 22:56 #10
det tvivler jeg på hjælper, men måske kan det give en bedre fejlbesked
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 10:43 #11
Det virker fint med g++ compiler og denne her kode

#include <iostream.h>

#include </usr/include/mysql/mysql.h>

int main(int argc, char *argv[])
{
    MYSQL *conn_ptr;
   
    conn_ptr = mysql_init(NULL);
    if (!conn_ptr)
    {
        cout << stderr, "mysql_init failed\n";
        return EXIT_FAILURE;
    }
   
    conn_ptr = mysql_real_connect(conn_ptr, "192.168.72.172", "root", "kommet", "brugere", 0, NULL, 0);
   
    if (conn_ptr)
    {
        cout << "Connection succes\n";
    }
    else
    {
        cout << "Connection failed\n";
    }
           
    mysql_close(conn_ptr);
       
    return EXIT_SUCCESS;
}
Avatar billede arne_v Ekspert
21. november 2005 - 10:55 #12
Som Bent Larsen engang sagde: man skal se meget førend man slider hul i brille glassene !
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 11:04 #13
Hehe. Du har ingen anelse om hva problemet kan være? Det er egentlig også lige meget, laver det bare i c++
Avatar billede arne_v Ekspert
21. november 2005 - 11:06 #14
nope
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 11:13 #15
Nå så lukker jeg spørgsmålet
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 11:14 #16
Du kan også smide et svar. Så deler vi pointene som tak for hjælpen
Avatar billede arne_v Ekspert
21. november 2005 - 11:15 #17
svar
Avatar billede arne_v Ekspert
21. november 2005 - 11:17 #18
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 12:40 #19
Nej men lyder da som en god ide. Jeg får connection failed når jeg eksekverer koden. Er det ikke den rigtige måde jeg skriver ip adr. på MySQL serveren?
Avatar billede arne_v Ekspert
21. november 2005 - 12:43 #20
jo, men prøv at udskriv:

mysql_error(conn_ptr)
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 12:47 #21
Den skriver lagersegmentfejl
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 12:50 #22
Og jeg bruger et program der hedder navicat på linux maskienen, som bruges til og administrere databasen. Og den kan fint lave en connection, så det er ikke pga. af en firewall der er sat op på serveren.

men hva betyder lagersegmenfejl?
Avatar billede arne_v Ekspert
21. november 2005 - 12:51 #23
jeg ser lige at du assigner fra mysql_real_connect til conn_ptr - det skal du ikke

men det er næppe skyld i fejlen
Avatar billede arne_v Ekspert
21. november 2005 - 12:52 #24
lagersegmenfejl = brug af memory problem (typisk noget forkert pointer)
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 12:55 #25
Jeg tror jeg vil prøve og bruge det eksempel du skriver i din artikel så.

Så jeg prøver MySQL++ API, jeg synes koden er nem og overskuelig
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 13:23 #26
Jeg får 3 siders compiler fejl, når jeg includer #include "/usr/include/sqlplus/sqlplus.hh"

Hvordan kan det være?
Avatar billede arne_v Ekspert
21. november 2005 - 20:52 #27
svært at sige uden at se fejlene ...

:-)
Avatar billede alex_sleiborg Nybegynder
21. november 2005 - 22:19 #28
Ja det er rigtigt nok. Det har sikkert noget og gøre med at det er meget compiler specifikt, som du skrev i din artikel. Så jeg må hellere til og kigge noget mere på det, så finder jeg nok ud af det. :)

Men jeg troede egentlig det var MySQL der havde udgivet MySQL++ API'et, eller AB som firmaet hedder.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester