PDA

Visualizza la versione completa : [C++] Connessione ad un database MySQL attraverso C++ in MacOS X


zeeb
01-11-2008, 13:38
Salve ragazzi per farla breve vi spiego immediatamente cosa succede:
PIATTAFORMA UTILIZZATA :Mac OS X Leopard;
DATABASE: MySQL 5;
NetBeans 6.1 per Scrivere il programma;

So che per interfacciare c++ con MySQL c'è bisogno di un connettore e per questo ho scaricato mysql++.
Per installare mysql++ ho fatto le seguenti operazioni:

$ fink install mysql15-dev
$ ./configure
$ make
$ sudo -i
# make install

Prima di proseguire nel problema che mi sono imbattuto vorrei un suggerimento se questi comandi sono quelli giusti per una corretta installazione di mysql++.
Ringrazio in anticipo tutti.

MacApp
01-11-2008, 20:14
Originariamente inviato da zeeb
Prima di proseguire nel problema che mi sono imbattuto vorrei un suggerimento se questi comandi sono quelli giusti per una corretta installazione di mysql++.
Ringrazio in anticipo tutti.
Non pensi che avresti maggior probabiltà che qualcuno possa aiutarti a risolvere il tuo problema, se tu lo descrivessi con chiarezza?
;-)

zeeb
03-11-2008, 11:46
Allora dopo aver installato netbeans c++ e dopo aver installato mysql++ :dhò: volevo provare ad eseguire il primo esempio contenuto nella cartella

mysql++-3.0.6/examples/simple1.cpp

per vedere se funziona il tutto.
Ecco il file:


/************************************************** *********************
simple1.cpp - Example showing the simplest way to get data from a MySQL
table with MySQL++.
************************************************** *********************/

#include "cmdline.h"
#include "./printdata.h"

#include "./mysql++.h"

#include <iostream>
#include <iomanip>

using namespace std;

int
main(int argc, char *argv[])
{
// Get database access parameters from command line
const char* db = 0, *server = 0, *user = 0, *pass = "";
if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
return 1;
}

// Connect to the sample database.
mysqlpp::Connection conn(false);
if (conn.connect(db, server, user, pass)) {
// Retrieve a subset of the sample stock table set up by resetdb
// and display it.
mysqlpp::Query query = conn.query("select item from stock");
if (mysqlpp::StoreQueryResult res = query.store()) {
cout << "We have:" << endl;
for (size_t i = 0; i < res.num_rows(); ++i) {
cout << '\t' << res[i][0] << endl;
}
}
else {
cerr << "Failed to get item list: " << query.error() << endl;
return 1;
}

return 0;
}
else {
cerr << "DB connection failed: " << conn.error() << endl;
return 1;
}
}



ed eco gli errori che da in esecuzione dopo averlo eseguito da netbeans


Running "/usr/bin/make -f Makefile CONF=Debug" in /Users/marko/Desktop/Tirocinio/Programmi/Esempio/Esempio

/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
mkdir -p dist/Debug/GNU-MacOSX
g++ -o dist/Debug/GNU-MacOSX/esempio build/Debug/GNU-MacOSX/simple1.o
Undefined symbols:
"mysqlpp::Connection::connect(char const*, char const*, char const*, char const*, unsigned int)", referenced from:
_main in simple1.o
"parse_command_line(int, char**, char const**, char const**, char const**, char const**, char const*)", referenced from:
_main in simple1.o
"mysqlpp::Query::store(mysqlpp::SQLTypeAdapter const&)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Connection::query(char const*)", referenced from:
_main in simple1.o
"mysqlpp::Query::str(mysqlpp::SQLQueryParms&)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Connection::Connection(bool)", referenced from:
_main in simple1.o
"mysqlpp::SQLTypeAdapter::SQLTypeAdapter(std::basic _string<char, std::char_traits<char>, std::allocator<char> > const&, bool)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Query::error() const", referenced from:
_main in simple1.o
"mysqlpp::Connection::error() const", referenced from:
_main in simple1.o
"mysqlpp::Connection::~Connection()", referenced from:
_main in simple1.o
_main in simple1.o
"mysqlpp::operator<<(std::basic_ostream<char, std::char_traits<char> >&, mysqlpp::String const&)", referenced from:
_main in simple1.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [dist/Debug/GNU-MacOSX/esempio] Error 1
make: *** [.build-impl] Error 2

Build failed. Exit value 2.


Please helpme sto sbattendo la testa da una settimana :dhò: . Un grazie in anticipo per le risposte :mame:

MacApp
03-11-2008, 12:48
Devi aggiungere la "libreria" mysql al progetto

zeeb
03-11-2008, 13:11
niente di nuovo dopo aver aggiunto


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


mi da gli stessi errori...

MacApp
03-11-2008, 14:50
Originariamente inviato da zeeb
niente di nuovo dopo aver aggiunto


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


mi da gli stessi errori...

Includere un file d'intestazione (header) è differente dall'aggiungere una libreria ad un progetto, e la cosa è indipendente dal fatto che si tratti mysql o altro.

Quindi prima dovresti cercare di imparare su come si faccia ad aggiungere una libreria ad un progetto. Suggerimento: in qualunque motore di ricerca, cercare le chiavi "NetBeans add library".

;-)

zeeb
03-11-2008, 17:00
librerie importate:
http://img123.imageshack.us/img123/2918/immagine1xl9.png

errore generato:


Running "/usr/bin/make -f Makefile CONF=Debug" in /Users/marko/Desktop/Tirocinio/Programmi/Esempio/Esempio

/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
mkdir -p build/Debug/GNU-MacOSX
g++ -c -g -o build/Debug/GNU-MacOSX/simple1.o simple1.cpp
mkdir -p dist/Debug/GNU-MacOSX
g++ -o dist/Debug/GNU-MacOSX/esempio build/Debug/GNU-MacOSX/simple1.o /usr/local/mysql-5.0.67-osx10.5-x86/lib/libdbug.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmygcc.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient_r.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmystrings.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysys.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libz.a /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient.15.0.0.dylib /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient.15.dylib /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient.dylib /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient_r.15.0.0.dylib /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient_r.15.dylib /usr/local/mysql-5.0.67-osx10.5-x86/lib/libmysqlclient_r.dylib
Undefined symbols:
"mysqlpp::Connection::connect(char const*, char const*, char const*, char const*, unsigned int)", referenced from:
_main in simple1.o
"parse_command_line(int, char**, char const**, char const**, char const**, char const**, char const*)", referenced from:
_main in simple1.o
"mysqlpp::Query::store(mysqlpp::SQLTypeAdapter const&)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Connection::query(char const*)", referenced from:
_main in simple1.o
"mysqlpp::Query::str(mysqlpp::SQLQueryParms&)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Connection::Connection(bool)", referenced from:
_main in simple1.o
"mysqlpp::SQLTypeAdapter::SQLTypeAdapter(std::basic _string<char, std::char_traits<char>, std::allocator<char> > const&, bool)", referenced from:
mysqlpp::Query::store() in simple1.o
"mysqlpp::Query::error() const", referenced from:
_main in simple1.o
"mysqlpp::Connection::error() const", referenced from:
_main in simple1.o
"mysqlpp::Connection::~Connection()", referenced from:
_main in simple1.o
_main in simple1.o
"mysqlpp::operator<<(std::basic_ostream<char, std::char_traits<char> >&, mysqlpp::String const&)", referenced from:
_main in simple1.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [dist/Debug/GNU-MacOSX/esempio] Error 1
make: *** [.build-impl] Error 2

Build failed. Exit value 2.


scusa ancora e ti ringrazio per l'aiuto che mi stai dando...

MacApp
03-11-2008, 18:34
Non hai aggiunto al progetto la libreria "libmysqlpp".
Scaricala ed installala a partire da:
http://tangentsoft.net/mysql++/

zeeb
03-11-2008, 21:55
Ti ringrazio ho risolto ma ho risolto effettuando un operazione, ho dovuto eliminare questo codice:

if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
return 1;
}

e impostare i parametri :

const char* db = "database_test", *server = "localhost", *user = "root", *pass = "";

giusto per articolo informativo perchè da questo errore :

Undefined symbols:
"parse_command_line(int, char**, char const**, char const**, char const**, char const**, char const*)", referenced from:
_main in simple1.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[1]: *** [dist/Debug/GNU-MacOSX/esempio] Error 1
make: *** [.build-impl] Error 2

Build failed. Exit value 2.

perchè lo compilo senza passare i parametri ??? ma, non dovrebbe essere una cosa che deve avvenire dopo la compilazione per esempio:

shell>a.out param1 param2 param3

Cmq se stato gentilissimo grazie a te ho avuto l'illuminazione grazie davvero :D :D.

Loading