| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 24 Jun, 2006 4:47 am Asunto: winsock2.h(109): E2238 Multiple declaration for 'fd_set' |
|
|
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.... _________________
 |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mie 28 Jun, 2006 7:30 pm Asunto: |
|
|
Estupendo Cesar, cuanta más información tengamos mejor .
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 28 Jun, 2006 8:46 pm Asunto: |
|
|
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... _________________
 |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Mie 28 Jun, 2006 10:01 pm Asunto: |
|
|
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 |
|
 |
|