Search code examples
c++visual-studio-2010connector

'int8_t' : redefinition error in config.h when trying to connect mysql cpp connector to visual studio 2010


This is the full error report that is generated when tried to compile my file using visual studio. The compiled file is a sample code that was found in the net. It used very basic methods to directly connect to the mysql database.

ERROR OUTPUT:

> 1>------ Build started: Project: mysql-sample, Configuration: Debug
> x64 ------ 1>Build started 16/06/2012 22:49:55. 1>PrepareForBuild: 1> 
> Creating directory "c:\users\rupertt aryeen wind\documents\visual
> studio 2010\Projects\mysql-sample\x64\Debug\".
> 1>InitializeBuildStatus: 1>  Creating
> "x64\Debug\mysql-sample.unsuccessfulbuild" because "AlwaysCreate" was
> specified. 1>ClCompile: 1>  stdafx.cpp 1>  mysql-sample.cpp
> 1>c:\program files\mysql\connector c++ 1.1.0\include\sqlstring.h(36):
> warning C4251: 'sql::SQLString::realStr' : class
> 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to
> be used by clients of class 'sql::SQLString' 1>          with 1>      
> [ 1>              _Elem=char, 1>             
> _Traits=std::char_traits<char>, 1>              _Ax=std::allocator<char> 1>          ] 1>C:\Program Files\MySQL\Connector C++ 1.1.0\include\mysql_connection.h(156):
> warning C4251: 'sql::mysql::MySQL_Connection::proxy' : class
> 'boost::shared_ptr<T>' needs to have dll-interface to be used by
> clients of class 'sql::mysql::MySQL_Connection' 1>          with 1>   
> [ 1>              T=sql::mysql::NativeAPI::NativeConnectionWrapper 1> 
> ] 1>C:\Program Files\MySQL\Connector C++
> 1.1.0\include\cppconn/exception.h(59): warning C4251: 'sql::SQLException::sql_state' : class
> 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to
> be used by clients of class 'sql::SQLException' 1>          with 1>   
> [ 1>              _Elem=char, 1>             
> _Traits=std::char_traits<char>, 1>              _Ax=std::allocator<char> 1>          ] 1>c:\program files\mysql\connector c++ 1.1.0\include\cppconn\config.h(60): error
> C2371: 'int8_t' : redefinition; different basic types 1>         
> C:\Program Files (x86)\Microsoft Visual Studio
> 10.0\VC\include\stdint.h(17) : see declaration of 'int8_t' 1>c:\program files\mysql\connector c++
> 1.1.0\include\cppconn\config.h(60): error C2371: 'int8_t' : redefinition; different basic types 1>          C:\Program Files
> (x86)\Microsoft Visual Studio 10.0\VC\include\stdint.h(17) : see
> declaration of 'int8_t' 1> 1>Build FAILED. 1> 1>Time Elapsed
> 00:00:12.92
> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Solution

  • It looks like you should be able to work around this problem by setting the following macro definition in your project settings:

    HAVE_INT8_T=1
    

    or by /DHAVE_INT8_T=1 if you're using the command line.

    Actually, you should probably set the following macro definitions in the project instead:

    HAVE_STDINT_H=1
    CPPCONN_DONT_TYPEDEF_MS_TYPES_TO_C99_TYPES=1
    

    This should make the MySQL connector headers rely only on stdint.h for the C99 integer typenames instead of trying to define any of them on its own.