Problème de conflit entre mysql et math.h
Question
Le problème est que le compilateur dit qu’il existe une redéfinition d’une fonction entre une bibliothèque appartenant à MySQL et math.h à partir de la bibliothèque std.
Je suis au courant depuis deux jours et je n'arrive toujours pas à comprendre.
Cela est-il déjà arrivé à quelqu'un?
Ceci est la sortie du compilateur
C:\mingw\bin\mingw32-make.exe all 'Building file: ../src/interfaz/ventanaconf.cpp' 'Invoking: GCC C++ Compiler' C:\mingw\bin\mingw32-g++.exe -mms-bitfields -I"c:\dev-cpp\gtkmm\include\gtkmm-2.4" -I"c:\dev-cpp\gtkmm\lib\gtkmm-2.4\include" -I"c:\dev-cpp\gtkmm\include\glibmm-2.4" -I"c:\dev-cpp\gtkmm\lib\glibmm-2.4\include" -I"c:\dev-cpp\gtkmm\include\gdkmm-2.4" -I"c:\dev-cpp\gtkmm\lib\gdkmm-2.4\include" -I"c:\dev-cpp\gtkmm\include\pangomm-1.4" -I"c:\dev-cpp\gtkmm\include\atkmm-1.6" -I"c:\dev-cpp\gtkmm\include\sigc++-2.0" -I"c:\dev-cpp\gtkmm\lib\sigc++-2.0\include" -I"c:\dev-cpp\gtkmm\include\cairomm-1.0" -I"c:\gtk\include\gtk-2.0" -I"c:\gtk\include\glib-2.0" -I"c:\gtk\lib\glib-2.0\include" -I"c:\gtk\lib\gtk-2.0\include" -I"c:\gtk\include\pango-1.0" -I"c:\gtk\include\cairo" -I"c:\gtk\include\freetype2" -I"c:\gtk\include" -I"c:\gtk\include\atk-1.0" -I"c:\Archivos de programa\MySQL\MySQL Server 5.0\include" -O0 -g3 -w -c -fmessage-length=0 -MMD -MP -MF"src/interfaz/ventanaconf.d" -MT"src/interfaz/ventanaconf.d" -o"src/interfaz/ventanaconf.o" "../src/interfaz/ventanaconf.cpp" In file included from c:/Archivos de programa/MySQL/MySQL Server 5.0/include/my_global.h:73, from ../src/interfaz/../gestiondb/gestordb.h:6, from ../src/interfaz/../gestiondb/operacionesdb.h:5, from ../src/interfaz/ventanamodulos.h:20, from ../src/interfaz/ventanaconf.h:27, from ../src/interfaz/ventanaconf.cpp:1: c:/Archivos de programa/MySQL/MySQL Server 5.0/include/config-win.h: **In function `double rint(double)': c:/Archivos de programa/MySQL/MySQL Server 5.0/include/config-win.h:228: error: redefinition of `double rint(double)' C:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/math.h:620: **error: `double rint(double)' previously defined here** C:\mingw\bin\mingw32-make.exe: *** [src/interfaz/ventanaconf.o] Error 1**
Merci d'avance !!!
La solution 2
Le problème concernait une bibliothèque incluse, que Linux ne tient tout simplement pas compte, mais que Windows veut sortir. Il n'y a pas de problème à le laisser sous Linux non plus ...
Certains jours, je me sens SOOOOOOOOOOOOOOOOOOOOOOO STUPID: ..
Autres conseils
Ce fil dans la zone de support de mysql semble indiquer qu'ils ' Nous avons retiré la définition de rint () de leur fichier config_win.h en avril de cette année (même si le correctif avait été proposé en 2006). Utilisez-vous une version de la source MySQL plus récente que celle-là?
À la ligne 228 de c: / Archives de programme / MySQL / MySQL Server 5.0 / include / config-win.h, vous devriez trouver une déclaration / définition de la fonction nommée "rint". Dans la ligne 620 de C: / mingw / bin /../ lib / gcc / mingw32 / 3.4.2 /../../../../ include / math.h, vous devriez trouver une autre définition d'une fonction avec le même nom (qui fait probablement même la même chose).
Pour résoudre le problème, vous devez supprimer / supprimer / supprimer une de ces définitions.
Soyez prêt à rencontrer un problème similaire lors de la liaison, si vous liez également deux bibliothèques ayant la même fonction.