用c+编译+;使用mysql、pthreads和gtk

用c+编译+;使用mysql、pthreads和gtk,mysql,windows,boolean,math.h,Mysql,Windows,Boolean,Math.h,以前有人做过吗 我正在尝试使用MinGW来编译一个使用MySQL库的程序。我不断得到消息,函数“rint”被重新定义。好的,函数确实存在于MySQL的config win.h和标准库的math.h两个文件中,但它们都被认为是没有问题的库 在打破我的头一段时间后,我甚至尝试了这个,它不会编译: #include <iostream> #include <my_global.h> #include <mysql.h> using namespace std; i

以前有人做过吗

我正在尝试使用MinGW来编译一个使用MySQL库的程序。我不断得到消息,函数“rint”被重新定义。好的,函数确实存在于MySQL的config win.h和标准库的math.h两个文件中,但它们都被认为是没有问题的库

在打破我的头一段时间后,我甚至尝试了这个,它不会编译:

#include <iostream>
#include <my_global.h>
#include <mysql.h>
using namespace std;

int main() {
    cout << "Hello World!!!" << endl; // prints Hello World!!!
    return 0;   
}
我已经在WindowsXP和MinGW中测试了它,MySQL库在.a库中正确转换,在Linux(输出来自Linux,与Windows中的输出几乎相同)和MinGW32中测试了它

人们。。。我没有选择了。。。有什么线索吗??以前有人使用过MySQL和MinGW吗??这对Cygwin有用吗


如果您花时间回答,请提前感谢。

我不知道有问题的堆栈,但我猜不知怎么的,math.h会被加倍包括在内。看看math.h文件。应该有一个靠近顶部的地方。如果您不熟悉include-guard的概念,请访问该链接。在这两个地方,您都应该使用include卫士包含math.h

您还可以查找特定于Linux的#定义;由于#define where,该文件在Linux上可能不会包含两次


正如我所说,这只是一个猜测

这也是一个猜测,但似乎math.h和config win.h有一个名为rint的函数,请确保没有两个同名函数

顺便说一句,因为我不完全确定,我正在使这个社区可编辑,如果我不正确,请随意编辑这个帖子。

好的,我解决了它

我那个笨蛋把错误的文件放进去了。要在mingw做这件事,你必须包括而不是

无论如何谢谢你

In file included from /usr/include/mysql/my_global.h:73,
                 from probando.cpp:10:
/usr/include/mysql/config-win.h: In function ‘double rint(double)’:
/usr/include/mysql/config-win.h:229: error: redefinition of ‘double rint(double)’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/math.h:635: error: ‘double rint(double)’ previously defined here