2008-10-07 5 views
0

Кто-нибудь когда-либо делал это раньше ???Компиляция в C++ с mysql, pthreads и gtk

Я пытаюсь использовать MinGW для компиляции программы с использованием библиотек MySQL. Я продолжаю получать сообщение о том, что функция «rint» переопределена. Хорошо, что функция находится в обоих файлах config-win.h, из MySQL и 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; 
} 

И это команда, а также выход я выпустить для компиляции

i586-mingw32msvc-CC -I/USR/включать/MySQL probando.cpp -w

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 

Я проверил его как в WindowsXP с MinGW, с библиотеками Prope MySQL rly, преобразованный в .a библиотеки и в Linux (выход из Linux, почти такой же, как в Windows) с помощью MinGW32.

Люди ... У меня заканчиваются варианты ... Любые подсказки ?? Кто-то работал раньше с MySQL и MinGW ?? Может ли он работать с Cygwin?

Заранее благодарим, если вы нашли время ответить.

ответ

0

Я не знаю, что такое стек, но я предполагаю, что каким-то образом math.h получает двойное включение. Взгляните на файл math.h. Там должно быть include guard где-то близко к вершине. Следуйте ссылке, если вы не знакомы с концепцией охранника включения. В обоих местах вы должны включить math.h с помощью включенных охранников.

Возможно, вы также найдете #define, специфичные для Linux; файл не может быть дважды включен в Linux из-за #define где-то.

Как я уже сказал, это всего лишь предположение.

1

Также угадайте, но, похоже, что math.h AND config-win.h имеет функцию rint, убедитесь, что нет двух функций с одинаковыми именами.

BTW, потому что я не совсем уверен, я делаю это сообщество редактируемым, не стесняйтесь редактировать этот пост, если я ошибаюсь.

0

Хорошо, я решил.

Глупый мой был включен в неправильный файл. Для того, чтобы сделать это в MinGW вы должны #include <windows.h> и не < конфиг-win.h >

равно спасибо !!!