2010-06-14 7 views
2

Когда я компилирую код, который включает в себя заголовки Connector/C++, я получаю следующие ошибки:Connector/C++ Ошибка компиляции

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'

Буквально все, что я сделать это:

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

Теперь я могу в файл и комментарии линии, выполненной, которые дают мне ошибки:

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

Она компилирует, но когда я пытаюсь запустить код MySQL:

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

я получаю этот выход

test.exe exited with code -1073741515

Любые идеи?

+0

Почему нет ''> вокруг вас? –

+0

Фиксированные угловые скобки. Кроме того, этот вопрос задавал вопрос о MySQL ++, но из заголовков он явно говорит о Connector/C++. MySQL ++ - совершенно другая библиотека. –

ответ

0

Первое, что я думаю о выполнении будет обернуть вредоносный код в Try/уловом, и посмотреть, если он бросает исключение вы можете почерпнуть некоторую информацию из ...

+0

не выбрасывает никаких исключений, тот же результат – rizzo0917

0

Цитируя Connector/C++ wiki:

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

Мое предположение относительно причины вашего первого симптома является то, что код обнаружения платформы Connector/с ++ проверяет, что он строится для Windows, и оттуда предполагая, что вы используете Visual C++, который не поддерживает stdint .h, поэтому у него есть typedefs для заполнения для этого случая. Позже он #include stdint.h (возможно, потому, что он также обнаруживает, что он создается g ++) и тем самым вызывает ошибки типа конфликта.

Я не знаю о вашей другой проблеме, но скорее всего это связано с тем, что они не пытаются поддерживать MinGW.

Есть несколько вещей, которые вы можете сделать, чтобы исправить это:

  1. Разъем порта/C++ для MinGW. Это с открытым исходным кодом, у вас есть код.

  2. Switch to MySQL++, который поддерживает MinGW из коробки. См. README-MinGW.txt в tarball.

  3. Переключиться на Visual C++. Вы можете загрузить версию limited but functional and free (as in beer) от Microsoft, которой должно быть достаточно, чтобы использовать Connector/C++.

Смежные вопросы