Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

winsock2.h(109): E2238 Multiple declaration for 'fd_set'

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Tips & Tricks
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: winsock2.h(109): E2238 Multiple declaration for 'fd_set' Responder citando

En algunos casos, cuando se esta usando los componentes INDY 9.0, con el BDS2006, aparecen los siguientes errores...

Cita:
C++ Error] winsock2.h(109): E2238 Multiple declaration for 'fd_set'
[C++ Error] winsock.h(54): E2344 Earlier declaration of 'fd_set'
[C++ Error] winsock2.h(112): E2146 Need an identifier to declare
[C++ Warning] winsock2.h(144): W8017 Redefinition of 'FD_SET' is not identical
[C++ Error] winsock2.h(153): E2238 Multiple declaration for 'timeval'
[C++ Error] winsock.h(97): E2344 Earlier declaration of 'timeval'
[C++ Error] winsock2.h(209): E2238 Multiple declaration for 'hostent'
[C++ Error] winsock.h(153): E2344 Earlier declaration of 'hostent'
[C++ Error] winsock2.h(222): E2238 Multiple declaration for 'netent'
[C++ Error] winsock.h(166): E2344 Earlier declaration of 'netent'
[C++ Error] winsock2.h(229): E2238 Multiple declaration for 'servent'
[C++ Error] winsock.h(173): E2344 Earlier declaration of 'servent'
[C++ Error] winsock2.h(241): E2238 Multiple declaration for 'protoent'
[C++ Error] winsock.h(185): E2344 Earlier declaration of 'protoent'
[C++ Error] winsock2.h(327): E2238 Multiple declaration for 'in_addr'
[C++ Error] winsock.h(269): E2344 Earlier declaration of 'in_addr'
[C++ Error] winsock2.h(385): E2238 Multiple declaration for 'sockaddr_in'
[C++ Error] winsock.h(319): E2344 Earlier declaration of 'sockaddr_in'
[C++ Error] winsock2.h(395): E2238 Multiple declaration for 'WSAData'
[C++ Error] winsock.h(329): E2344 Earlier declaration of 'WSAData'
[C++ Error] winsock2.h(411): E2146 Need an identifier to declare
[C++ Warning] winsock2.h(455): W8017 Redefinition of 'SO_DONTLINGER' is not identical
[C++ Warning] winsock2.h(512): W8017 Redefinition of 'AF_IPX' is not identical
[C++ Warning] winsock2.h(540): W8017 Redefinition of 'AF_MAX' is not identical
[C++ Error] winsock2.h(546): E2238 Multiple declaration for 'sockaddr'
[C++ Error] winsock.h(492): E2344 Earlier declaration of 'sockaddr'
[C++ Error] winsock2.h(586): E2238 Multiple declaration for 'sockproto'
[C++ Error] winsock.h(501): E2344 Earlier declaration of 'sockproto'
[C++ Error] winsock2.h(625): E2238 Multiple declaration for 'linger'
[C++ Error] winsock2.h(625): E2228 Too many error or warning messages


Existen 2 manera de solucionar el error.

1.- Quitar de archivo.h, los siguiente archivos de cabecera.

Código:
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdMessageClient.hpp>
#include <IdPOP3.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>


y establecerlos en el archivo.cpp antes de la declaracion de la siguiente sentencia include

Código:
//---------------------------------------------------------------------------

#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdMessageClient.hpp>
#include <IdPOP3.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>

#include <vcl.h> // <-- antes de esta

y crear los componetentes en tiempo de ejecucion
ejemplo
Código:
void __fastcall TModulo_Autos::Button1Click(TObject *Sender)
{
   TIdPOP3 *IdPOP31= new TIdPOP3(this) ;2.- la otra es
}



2.- Establecer la condicion define de la siguiente manera

Código:
#define _WINSOCKAPI_


dentro del proyecto,

a gusto personal me dejado mejores sabores de boca la solucion 1, pero esta puede implementarse, el error aparece ya que los componentes INDY 9 (este ultimo para builder) usa el archivo de la librerira winsock2.h y builder en el caso de componentes como ClientSocket y ServerSocket o IBEvents usan la libreria winsock.h, bien otro error corregido...

saludos estamos en contacto y siempre aportando....
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Estupendo Cesar, cuanta más información tengamos mejor Wink .
En mi caso concreto me bastó con incluir la directiva:

#include <winsock2.h>

Al principio del archivo de cabecera .h del proyecto y siempre antes que todos los demás. Símplemente con esto ya dejó de darme el error.
Todo ello gracias a la información que pude hallar en:

http://carcino.gen.nz/tech/win/include_winsock2_header_file_first.php

P.D.: te pasé por privado un código para recuperar e-mails en HTML. ¿lo recibiste?
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

abusando del contexto, para tips y trucos... pon tambien el codigo de como ha quedado la solucion usando #include <winsock2.h>, recuerda que muchos no VEN claro..



si lo recibi, gracias...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

No hay ninguna función, es simplemente añadir la directiva que he citado antes al inicio del archivo de cabera del proyecto.
Aquí os dejo la parte de los "includes" del archivo de cabecera de mi proyecto para que veais cómo quedó:
Código:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <winsock2.h>/*este es el include que me solucionó el problema*/
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include "LMDButton.hpp"
#include "LMDCustomButton.hpp"
#include <Menus.hpp>
#include <ComCtrls.hpp>
#include "LMDBaseControl.hpp"
#include "LMDBaseGraphicControl.hpp"
#include "LMDBaseLabel.hpp"
#include "LMDControl.hpp"
#include "LMDCustomLabel.hpp"
#include "LMDLabel.hpp"
#include <ActnList.hpp>
#include "LMDButtonPanel.hpp"
#include "LMDCustomBevelPanel.hpp"
#include "LMDCustomControl.hpp"
#include "LMDCustomPanel.hpp"
#include "LMDCustomPanelFill.hpp"
#include "LMDCustomParentPanel.hpp"
#include <DBGrids.hpp>
#include <dbcgrids.hpp>
#include <DB.hpp>
#include <DBTables.hpp>
#include <FileCtrl.hpp>
#include "LMDButtonControl.hpp"
#include "LMDCheckBox.hpp"
#include "LMDCustomCheckBox.hpp"
#include <NMpop3.hpp>
#include <Psock.hpp>
#include "CGAUGES.h"
#include <ImgList.hpp>
#include <Dialogs.hpp>
#include <Buttons.hpp>
#include "LMDCustomComponent.hpp"
#include "LMDCustomHint.hpp"
#include "LMDHint.hpp"
#include "LMDCustomShapeHint.hpp"
#include "LMDShapeHint.hpp"
#include <AppEvnts.hpp>
#include "trayb.h"
#include "LMDSysInfo.hpp"
#include "LMDBaseShape.hpp"
#include "LMDShapeControl.hpp"
#include "LMDMessageHint.hpp"
#include "LMDFill.hpp"
#include "LMDGraphicControl.hpp"
#include "LMDPanelFill.hpp"
#include <ToolWin.hpp>
#include "CSPIN.h"
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdMessageClient.hpp>
#include <IdPOP3.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
#include <IdMessage.hpp>
#include "IdIOHandler.hpp"
#include "IdIOHandlerSocket.hpp"
#include <IdSSLOpenSSL.hpp>
//---------------------------------------------------------------------------

_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.