Multiple declaration for 'fd_set' in winsock2- Builder C++ 5
Posted: Wed 22 Sep 2010 08:29
I'm using ODAC for Builder C++ 5 since about 4 years in my server application. After upgrade from 6.50.0.39 to 7.xx I got error: " [C++ Error] winsock2.h(103): E2238 Multiple declaration for 'fd_set' [C++ Error] winsock.h(55): E2344 Earlier declaration of 'fd_set' ". I checked some previous versions and I found that this error began with wersion 6.90.0.54. Version 6.90.0.53 is ok, but 6.90.0.54 not.
Could you explain what is wrong with this new verstions of ODAC (since 6.90.0.54).
1) Compiler Errors:
[C++ Error] winsock2.h(103): E2238 Multiple declaration for 'fd_set'
[C++ Error] winsock.h(55): E2344 Earlier declaration of 'fd_set'
[C++ Error] winsock2.h(106): E2146 Need an identifier to declare
[C++ Error] winsock2.h(147): E2238 Multiple declaration for 'timeval'
[C++ Error] winsock.h(98): E2344 Earlier declaration of 'timeval'
[C++ Error] winsock2.h(203): E2238 Multiple declaration for 'hostent'
[C++ Error] winsock.h(154): E2344 Earlier declaration of 'hostent'
[C++ Error] winsock2.h(216): E2238 Multiple declaration for 'netent'
[C++ Error] winsock.h(167): E2344 Earlier declaration of 'netent'
[C++ Error] winsock2.h(223): E2238 Multiple declaration for 'servent'
[C++ Error] winsock.h(174): E2344 Earlier declaration of 'servent'
[C++ Error] winsock2.h(235): E2238 Multiple declaration for 'protoent'
[C++ Error] winsock.h(186): E2344 Earlier declaration of 'protoent'
[C++ Error] winsock2.h(319): E2238 Multiple declaration for 'in_addr'
[C++ Error] winsock.h(270): E2344 Earlier declaration of 'in_addr'
[C++ Error] winsock2.h(377): E2238 Multiple declaration for 'sockaddr_in'
[C++ Error] winsock.h(320): E2344 Earlier declaration of 'sockaddr_in'
[C++ Error] winsock2.h(387): E2238 Multiple declaration for 'WSAData'
[C++ Error] winsock.h(330): E2344 Earlier declaration of 'WSAData'
[C++ Error] winsock2.h(403): E2146 Need an identifier to declare
[C++ Error] winsock2.h(536): E2238 Multiple declaration for 'sockaddr'
[C++ Error] winsock.h(493): E2344 Earlier declaration of 'sockaddr'
[C++ Error] winsock2.h(545): E2238 Multiple declaration for 'sockproto'
[C++ Error] winsock.h(502): E2344 Earlier declaration of 'sockproto'
[C++ Error] winsock2.h(584): E2238 Multiple declaration for 'linger'
[C++ Error] winsock2.h(584): E2228 Too many error or warning messages
....
2) Compiler shows it in this place:
Winsock2.h
.....
typedef struct fd_set {
u_int fd_count; /* how many are SET? */
SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
} fd_set;
extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
.....
Could you explain what is wrong with this new verstions of ODAC (since 6.90.0.54).
1) Compiler Errors:
[C++ Error] winsock2.h(103): E2238 Multiple declaration for 'fd_set'
[C++ Error] winsock.h(55): E2344 Earlier declaration of 'fd_set'
[C++ Error] winsock2.h(106): E2146 Need an identifier to declare
[C++ Error] winsock2.h(147): E2238 Multiple declaration for 'timeval'
[C++ Error] winsock.h(98): E2344 Earlier declaration of 'timeval'
[C++ Error] winsock2.h(203): E2238 Multiple declaration for 'hostent'
[C++ Error] winsock.h(154): E2344 Earlier declaration of 'hostent'
[C++ Error] winsock2.h(216): E2238 Multiple declaration for 'netent'
[C++ Error] winsock.h(167): E2344 Earlier declaration of 'netent'
[C++ Error] winsock2.h(223): E2238 Multiple declaration for 'servent'
[C++ Error] winsock.h(174): E2344 Earlier declaration of 'servent'
[C++ Error] winsock2.h(235): E2238 Multiple declaration for 'protoent'
[C++ Error] winsock.h(186): E2344 Earlier declaration of 'protoent'
[C++ Error] winsock2.h(319): E2238 Multiple declaration for 'in_addr'
[C++ Error] winsock.h(270): E2344 Earlier declaration of 'in_addr'
[C++ Error] winsock2.h(377): E2238 Multiple declaration for 'sockaddr_in'
[C++ Error] winsock.h(320): E2344 Earlier declaration of 'sockaddr_in'
[C++ Error] winsock2.h(387): E2238 Multiple declaration for 'WSAData'
[C++ Error] winsock.h(330): E2344 Earlier declaration of 'WSAData'
[C++ Error] winsock2.h(403): E2146 Need an identifier to declare
[C++ Error] winsock2.h(536): E2238 Multiple declaration for 'sockaddr'
[C++ Error] winsock.h(493): E2344 Earlier declaration of 'sockaddr'
[C++ Error] winsock2.h(545): E2238 Multiple declaration for 'sockproto'
[C++ Error] winsock.h(502): E2344 Earlier declaration of 'sockproto'
[C++ Error] winsock2.h(584): E2238 Multiple declaration for 'linger'
[C++ Error] winsock2.h(584): E2228 Too many error or warning messages
....
2) Compiler shows it in this place:
Winsock2.h
.....
typedef struct fd_set {
u_int fd_count; /* how many are SET? */
SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
} fd_set;
extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
.....