質問

問題は、MySQLに属するライブラリとstdライブラリのmath.hの間に関数の再定義があるとコンパイラが言うことです。

私は2日間これを終えましたが、まだ理解できません。

これは誰にも起こったことがありますか?

これはコンパイラからの出力です


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**

事前に感謝します!!!

役に立ちましたか?

解決 2

問題はインクルードされたライブラリに関するもので、Linuxはこれを単に無視しますが、Windowsは必要としません。 Linuxでも問題なく使用できます...

ときどきSOOOOOOOOOOOOOOOOOOOOOOOOO愚かさを感じる:..

他のヒント

mysqlサポートエリアのこのスレッドは、それらが今年4月の時点でconfig_win.hファイルからrint()の定義を取りました(2006年にパッチが提案されたにもかかわらず)。それより新しいバージョンのMySQLソースを使用していますか?

c:/ Archivos de programa / MySQL / MySQL Server 5.0 / include / config-win.hの行228には、「rint」という名前の関数の宣言/定義があります。 C:/ mingw / bin /../ lib / gcc / mingw32 / 3.4.2 /../../../../ include / math.hの620行目で、関数の別の定義を見つける必要があります同じ名前(おそらく同じことをします)。

問題を解決するには、これらの定義の1つを削除/コメント化/定義解除する必要があります。

同じ関数を使用して2つのライブラリもリンクする場合は、リンク時に同様の問題が発生する準備をしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top