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

左心房为你撑大大i 提交于 2019-11-28 12:36:41

问题


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

回答1:


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.



来源:https://stackoverflow.com/questions/11065606/int8-t-redefinition-error-in-config-h-when-trying-to-connect-mysql-cpp-conne

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!