2009-09-21 1 views
0

J'écris une application en C++ (en utilisant Eclipse avec Linux GCC) qui est supposée interagir avec mon serveur MySQL. J'ai téléchargé le MySQL Connector C++ a, précompilé, et copié les fichiers dans les répertoires (/ usr/lib,/usr/include). J'ai référencé dans la section de lien de C++ de GCC des propriétés de projet dans Eclipse ("mysqlcppconn"). Mon code provient directement de la gestion des erreurs de référence MySQL (Bonjour tout le monde) sauf que je supprimé et les déclarations de suppression à la fin (je ne suis même pas y arriver si ce qui est le point)MySQL Connector C++ - make Erreur 1

#include <stdlib.h> 
#include <iostream> 
#include "mysql_connection.h" 
#include "mysql_driver.h" 
#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 
using namespace std; 

int main(void) 
{ 
    sql::Driver *driver; 
    sql::Connection *con; 
    sql::Statement *stmt; 
    sql::ResultSet *res; 

    driver = get_driver_instance(); 
    con = driver->connect("tcp://127.0.0.1:3306", "root", "root"); 
    con->setSchema("test"); 

    stmt = con->createStatement(); 
    res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); 

    while (res->next()) 
    { 
    cout << "\t... MySQL replies: "; 
    cout << res->getString("_message") << endl; 
    cout << "\t... MySQL says it again: "; 
    cout << res->getString(1) << endl; 
    } 
return EXIT_SUCCESS; 
} 

maintenant quand je compile cela, Cela me donne une erreur make 1, que la page de manuel dit signifie que je dois recompiler mes paquets. Je l'ai essayé, ça ne marche pas.

J'ai l'impression d'avoir atteint des impasses partout. Quelqu'un peut-il me dire comment résoudre ce problème? (Faire pourrait vraiment me dire ce que je devrais recompiler.) Quelqu'un at-il des conseils/suggestions/idées où je me suis trompé? Edit - Haché le code un peu, mais l'idée générale est la même.

Mise à jour - Si j'utilise le terminal au lieu de exlipse à faire, il me dit que le problème est évidemment que le connecteur veut libstdC++ so.5 alors que j'ai libstdC++ so.6...

+0

Je suis sûr qu'ils ne sont pas la source du problème. – wsd

Répondre

2

La solution est assez simple - compilez votre propre connecteur. Je l'ai fait avec la version 1.0.5 du Connecteur. de le faire, vous devez installer le paquet via

sudo apt-get install mysql-client

Dans le répertoire du paquet source que vous avez téléchargé (et décompressé), le type

cmake .

apparemment, dans trois dossiers de le pilote, les références sont faites à snprintf et printf, sans inclure l'en-tête stdio.h. J'ai ajouté

#include <stdio.h>

à chaque fichier, puis, dans le terminal, dactylographié

make

, je copié les fichiers à mon répertoire lib

sudo cp path/to/driver/libmysqlcppconn* /usr/lib/

et everythign a travaillé un charme. Le DB_SERVER, DB_USERNAME et DB_PASSWORD sont # défini dans un en-tête inclus

1

Téléchargez et installez les packages de développement C++ MySQL pour votre distribution. Pour ubuntu, exécutez # sudo apt-get install libmysql ++ - dev.

+0

ah cela expliquerait beaucoup. est-ce que cela inclut déjà le (s) connecteur (s), ou est-ce que j'utilise le (s) connecteur (s) par dessus ou est-ce que cela me permettra de compiler les sources que j'ai téléchargées? – wsd

+0

cette réponse n'aide pas du tout. MySQL ++ semble construire au-dessus de l'API MySQL. Je ne demande pas d'alternatives, mais pour savoir comment le faire fonctionner avec l'API MySQL. – wsd