2010-06-14 7 views
2

Lorsque je compile le code qui comprend les en-têtes connecteur/C++, je reçois les erreurs suivantes:Connecteur/C++ erreur de compilation

c:\qt\2010.03\mingw\bin../lib/gcc/mingw32/4.4.0/../../../../include/stdint.h:27: error: 'int8_t' has a previous declaration as 'typedef signed char int8_t'

c:\qt\2010.03\mingw\bin../lib/gcc/mingw32/4.4.0/../../../../include/stdint.h:31: error: 'int32_t' has a previous declaration as 'typedef int int32_t'

c:\qt\2010.03\mingw\bin../lib/gcc/mingw32/4.4.0/../../../../include/stdint.h:32: error: 'uint32_t' has a previous declaration as 'typedef unsigned int uint32_t'

littéralement tout ce que je fais est la suivante:

#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 
#include <cppconn/prepared_statement.h> 

Maintenant, je peux aller dans le fichier et commenter les lignes sur qui me donnent des erreurs:

//typedef signed char int8_t; 
//typedef int int32_t; 
//typedef unsigned uint32_t; 

Il compile, mais lorsque je tente d'exécuter le code de MySQL:

sql::Driver *driver; 
driver = get_driver_instance(); 

Je reçois cette sortie

test.exe exited with code -1073741515

Des idées?

+0

Pourquoi pas '<>' autour de vous? –

+0

Supports d'angle fixes. En outre, cette question posait des questions sur MySQL ++, mais à partir des noms d'en-tête, il parle clairement de Connector/C++ à la place. MySQL ++ est une bibliothèque complètement différente. –

Répondre

0

La première chose que je pense à faire serait d'envelopper le code incriminé dans un try/catch, et voir si elle est lancer une exception, vous pouvez glaner quelques informations ...

+0

n'a émis aucune exception, même résultat – rizzo0917

0

Je cite le Connector/C++ wiki:

We are sorry but we cannot formally support other compilers than Microsoft Visual Studio 2003 and above.

Je pense à la cause de votre premier symptôme est que le code de détection de la plate-forme de connecteur/C++ vérifie qu'il est en cours de construction pour Windows, et à partir de là en supposant que vous utilisez Visual C++ qui ne supporte pas stdint .h, donc il a typedefs à remplir pour ce cas. Plus tard, il #include stdint.h (peut-être parce qu'il détecte également qu'il est construit par g ++) et provoque ainsi vos erreurs de conflit de type.

Je ne connais pas votre autre problème, mais il est probable que quelque chose d'autre provient du fait qu'ils n'essaient pas de prendre en charge MinGW.

Il y a plusieurs choses que vous pouvez faire pour résoudre ce problème:

  1. Port connecteur/C++ pour MinGW. C'est open source, vous avez le code.

  2. Passez à MySQL++, qui prend en charge MinGW dès sa sortie de l'emballage. Voir README-MinGW.txt dans l'archive.

  3. Basculez vers Visual C++. Vous pouvez télécharger une version limited but functional and free (as in beer) de Microsoft qui devrait suffire pour utiliser Connector/C++.