begin process at 2012 05 28 22:19:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Conflit librairie Erreur à la compilation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conflit librairie Erreur à la compilation

jeudi 8 janvier 2009 à 18:56:42 | Conflit librairie Erreur à la compilation

KurpeusLondon

Bonsoir,

J'utilise Visual C++ express 2008 pour un petit prog que je suis en train de développer. Pour cela, j'utilise les librairies ci dessous :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <fcntl.h>
#include <sys/types.h>
#include "crc.h"
#include "sendUdpTrap.c"

J'utilise de plus une librairie trouvé dans la section "tutoriaux" qui utilise 

#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

J'ai vu qu'il fallait que j'incluse winsock2 avant windows.h. J'ai donc déplacé les include du tutorial que j'ai placé dans mon fichier principal, en tête de fichier. Cependant maintenant j'obtient des erreurs suivantes

c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(12) : error C2275: 'SOCKET' : illegal use of this type as an expression
1>        c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(118) : see declaration of 'SOCKET'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(12) : error C2146: syntax error : missing ';' before identifier 'sock'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(12) : error C2065: 'sock' : undeclared identifier
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(13) : error C2275: 'SOCKADDR_IN' : illegal use of this type as an expression
1>        c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(588) : see declaration of 'SOCKADDR_IN'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(13) : error C2146: syntax error : missing ';' before identifier 'sin'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(13) : error C2065: 'sin' : undeclared identifier
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(15) : error C2143: syntax error : missing ';' before 'type'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(16) : error C2143: syntax error : missing ';' before 'type'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(18) : error C2065: 'ip' : undeclared identifier
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(18) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int'
1>c:\documents and settings\potierj\my documents\visual studio 2008\projects\ati100info\ati100info\sendudptrap.c(18) : warning C4024: 'sprintf' : different types for formal and actual

Si j'essaye de compiler le fichier seul, il marche très bien, donc je pense que c'est un problème de librairies ou des options dans les bas fond du compilateurs que je ne connais pas.

Merci






jeudi 8 janvier 2009 à 19:13:12 | Re : Conflit librairie Erreur à la compilation

uaip

Salut,
Déjà, la seule librairie (et encore, on dit bibliothèque) que tu site est ws2_32.lib, les autres fichiers ne sont que des headers.
L'ordre de leur inclusion n'a pas d'importance :
#include <windows.h>
#include <winsock2.h>

est équivalent à :
#include <winsock2.h>
#include <windows.h>

(du moins, de ce que je connais, puis chez moi ça marchait niquel).
Quant au #pragma comment(lib,"ws2_32.lib"), il ne fonctionen que sous Visual C++, sous Dev C++ (comme sous Codes::Blocks) il faut paramétrer manuellement le linker.
Là je dis peut-être une connerie, mais je tenterais de rajouter -lws2_32 aux options du linker (-l + nom_de_la_lib mais je ne suis pas du tout sûr).
Essaye déjà ça.

Cordialement, uaip.
jeudi 8 janvier 2009 à 21:41:24 | Re : Conflit librairie Erreur à la compilation

BruNews

Administrateur CodeS-SourceS
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")

Un des très rares cas où l'ordre d'inclusion est important.

ciao...
BruNews, MVP VC++
jeudi 8 janvier 2009 à 21:52:17 | Re : Conflit librairie Erreur à la compilation

uaip

Ah merde ^^ d'accord je saurais.
Pourtant, comme à chaque fois, j'ai vérifié avant de poster le commentaire, sur le net j'ai trouvé plusieurs problèmes identiques où certains expliquaient aussi que la directive #pragma ne fonctionnait que sous Visual. Et j'ai regardé une de mes sources, windows.h est inclus avant winsock2.h (mais aucun #pragma, les paramètres du linker se font via une boite de dialogue). C'est peut-être ça qui change, je ne sais pas.

Cordialement, uaip.
lundi 12 janvier 2009 à 13:22:15 | Re : Conflit librairie Erreur à la compilation

KurpeusLondon

J'ai placé les header dans l'ordre ci dessus, mais j'arrive toujours pas a compiler correctement. Quelqu'un pourrait etre pourrait en dire un peu plus par rapport aux possibles options du linker  cité par uaip ?
lundi 12 janvier 2009 à 13:59:27 | Re : Conflit librairie Erreur à la compilation

KurpeusLondon

Ce que je ne comprends pas c'est que si je compile seul le fichier et que je lui ajoute les mêmes includes, je n'ai pas de problème. Dès que je l'ajoute a mon projet, cela ne marche plus...
lundi 12 janvier 2009 à 15:02:42 | Re : Conflit librairie Erreur à la compilation

KurpeusLondon

A tout hasard, je post mon code :
======================== Main File =======================

#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include "crc.h"
#include "sendUdpTrap.c"







/*=============================================================================
  Définition de constantes
=============================================================================*/
#define RX_SIZE         1024    /* taille tampon d'entrée  */
#define TX_SIZE         1024    /* taille tampon de sortie */
#define MAX_WAIT_READ   5000    /* temps max d'attente pour lecture (en ms) */


const char * readOnly = "r";
const char * writeOnly = "w";
const char * readWrite = "a+";

int portCom = 8;


/*=============================================================================
  Variables globales.
=============================================================================*/

/* Handle du port COM ouvert */
HANDLE g_hCOM = NULL;

/* Délais d'attente sur le port COM */
COMMTIMEOUTS g_cto =
{
    -1,  /* ReadIntervalTimeOut          */
    0,              /* ReadTotalTimeOutMultiplier   */
    50,  /* ReadTotalTimeOutConstant     */
    5,              /* WriteTotalTimeOutMultiplier  */
    50               /* WriteTotalTimeOutConstant    */
};

/* Configuration du port COM */
DCB g_dcb =
{
    sizeof(DCB),        /* DCBlength            */
    9600,               /* BaudRate             */
    TRUE,               /* fBinary              */
    FALSE,              /* fParity              */
    FALSE,              /* fOutxCtsFlow         */
    FALSE,              /* fOutxDsrFlow         */
    DTR_CONTROL_ENABLE, /* fDtrControl          */
    FALSE,              /* fDsrSensitivity      */
    FALSE,              /* fTXContinueOnXoff    */
    FALSE,              /* fOutX                */
    FALSE,              /* fInX                 */
    FALSE,              /* fErrorChar           */
    FALSE,              /* fNull                */
    RTS_CONTROL_ENABLE , /* fRtsControl          */
    FALSE,              /* fAbortOnError        */
    0,                  /* fDummy2              */
    0,                  /* wReserved            */
    28672,              /* XonLim               */
    7168,              /* XoffLim              */
    8,                  /* ByteSize             */
    NOPARITY,           /* Parity               */
    ONESTOPBIT,         /* StopBits             */
    0x11,               /* XonChar              */
    0x13,               /* XoffChar             */
    '?',                /* ErrorChar            */
    0x1A,               /* EofChar              */
    0x10                /* EvtChar              */
};


/*=============================================================================
  Fonctions du module.
=============================================================================*/
BOOL OpenCOM    (int nId);
BOOL CloseCOM   ();
BOOL ReadCOM    (void* buffer, int nBytesToRead, int* pBytesRead);
BOOL WriteCOM   (void* buffer, int nBytesToWrite, int* pBytesWritten);
void initCom (int BaudRate, int fRtsControle, int ByteSize, int Parity,
              int StopsBits, char XonChar, char XoffChar, char ErrorChar,
              char EovChar, char EvtChar);
unsigned char * CRC16 ( unsigned  char puchMsg, unsigned short usDataLen );
void freeMem(struct sTop * pTop);
void initStruct(struct sTop* pTop);
int sendTrap(char * pBufferOut);

struct sTop{
    struct sData * u12Main;
    struct sData * u23Main;
    struct sData * u31Main;
    struct sData * v1Main;
    struct sData * v2Main;
    struct sData * v3Main;
    struct sData * freqMain;
    struct sData * u12Gen;
    struct sData * u23Gen;
    struct sData * u31Gen;
    struct sData * v1Gen;
    struct sData * v2Gen;
    struct sData * v3Gen;
    struct sData * freqGen;
};

struct sData{
    char * label;
    unsigned int value;
    char frame[9]; /* Modbus communication use addr "0" to broadcast and 1 to 247 to address a node. 248 to 255 are reserved addresses. To be convert in Hex */
                  /* According to the ATI100 transfer panel, broadcast adresse only usable for writing functions (6 and 16). */
                /* ModBus define two function to compute the CRC : RTU and ASCII. ATI100 use RTU */
};


char tableHex[14] = { 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7A, 0x7C};
char tableLabel[14][9]= {"u12Main","u23Main","u31Main","v1Main","v2Main","v3Main","freqMain","u12Gen","u23Gen","u31Gen","v1Gen", "v2Gen","v3Gen","freqGen"};


struct sData * createStruct(unsigned int code, char * label);

int main()
{

        /* variables locales */
    char bufferIn[16];
//    char * pBufferIn;

    int idReq = 14, nBytesWritten, nBytesRead;
    int * pItemOut = NULL;
    int * pItemIn = NULL;
    int crcError = 1;
    unsigned int valueItem;

(......)



======================== File sendUdpTrap==================

#include <winsock2.h>
#include <stdio.h>

#pragma comment(lib,"ws2_32.lib")




int sendTrap(char * pBufferOut)
{
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);

    SOCKET sock;
    SOCKADDR_IN sin;

    char ip[15];
    int port;

    sprintf("%s",ip, "192.168.100.20");
    port = 162;

    sin.sin_family=AF_INET;
    sin.sin_addr.s_addr=inet_addr(ip);
    sin.sin_port=htons(port);

    sock=socket(AF_INET,SOCK_DGRAM,0);//On initialise le socket avec SOCK_DGRAM pour dire qu'on est en UDP
    bind(sock,(SOCKADDR*)&sin,sizeof(sin));


        memset(pBufferOut,0,sizeof(pBufferOut));


        sendto(sock,pBufferOut,sizeof(pBufferOut),0,(SOCKADDR*)&sin,sizeof(sin));
        //sendto envoie des packets udp, ses parametres :
        // 1 : le socket avec lequel on envoie
        // 2 : la chaine a envoyer
        // 3 : la taille de cette chaine
        // 4 : ??? chais po
        // 5 : les parametre (convertis en structure SOCKADDR
        // 6 : la taille de la structure SOCKADDR_IN

return 0;
}


Cette discussion est classée dans : visual, include, error, documents, ati100info


Répondre à ce message

Sujets en rapport avec ce message

Lib ADO sous Visual C++ [ par callaghan1981 ] j ai inserer la librairie .h et les lib ds le projetmais ca na marche pas tro.si je compile #include"ADOlib.h"il me met une erreurcompiling...connect. Problème stl et vc++ [ par VinceExtense ] j'ai recherché de partout mais rien pour résoudre mon problème.j'utilise visual c++ et je veux utiliser une multimap, donc j'inclus :#include mais ens Problème de reconaissance de winmain sous visual studio 6 [ par TRSM ] Bonjour à tous , voilà mon souci, ce petit programme n'est pas compilé sous visual c++ 6.0 ni sous Borland 5 car la procédure principale main n'est pa Problème d'installation OpenGL avec visual c++ [ par Turok ] Salut, Alors voila je souhaite utiliser openGL avec visual C++ mais sa ne marche pas. Pourtant j'ai bien mis les fichier "gl.h" et glu.h" dans le repe probleme avec openGL sous visual c++ [ par c_raf ] Bonsoir a tous,Excusez moi de vous déranger à cette heure ci mais j'ai un petit problème avec openGL et visual c++.Voila je suis en train de développe Probleme avec windows.h et Visual C++ [ par ndubien ] Salut, J'ai un probleme avec #include et Visual C++, en efft lorsque je met #inlude , Vis erreur sous visual C++ [ par wallie0703 ] BonjourJ'ai ces erreurs qui s'affichent je voudrais savoir comment les enlever??1>..\PI_GCS.cpp(44) : error C4430: spécificateur de type manquant - in Problème compilateur [ par verd689 ] Bonjour,j'ai un petit problème lors de la compilation avec wxDev C++. Je précise que j'ai vista et je vient juste d'appliquer indiquer iciIl ya une wxwidgets [ par jojomillenium ] Bonjour,Ca fait 2 jours que je galere a essayer d installer wxwidgets!Sachant que c'est la galere sur VS6, je veux utiliser CodeBlocks, j'ai suivi a l utiliser ADO dans une DLL d'extension [ par azamharir ] bonjour j'ai besoin de me connecter dans ma dll à des bases de données. d'habitude dans des projets normaux (non dll) j'utilise ADO et ça marche bien


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales