"linked error" en C

Signaler
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005
-
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
voila j'ai devc++ sous windows XP
j'ai lu un tuto sur comment manier les sockets...

voici mon code :
void Scann(char buffer[],int port)
{

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr(buffer);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));

if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)))
{
printf("La connection à %s:%d a échoué\n");
}
else{
printf("La Connection à %s:%d a Réussie...\n");
}

closesocket(sock);
WSACleanup();

}

mais lorsque je veut compile j'ai des erreurs de type :


[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `inet_addr@4'
[Linker error] undefined reference to `htons@4'
etc...

comment dois-je faire pour compiler???merci d'avance!!!!
:big)

7 réponses

Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005

j'ai oublier de dire, dans mes includes j'ai

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

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

;-)
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
#pragma comment(lib, "ws2_32.lib") <=== inefficace avec GCC

Faut ajouter -lsw2_32 dans ta ligne de compilation, je sais pas où c'est dans DevC++... Sûrement quelque part dans les options du projet.
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005

ça change rien...snif....
j'ai une erreur sur le makefiel en plus...lol
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Paste ton Makefile, on va voir ce qui va pas (et vazyléon).

PS : j'espère que t'as pas copié/collé ce que je t'ai donné, j'ai inversé le "w" et le "s", c'est bien sûr -lws2_32 !
Messages postés
20
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
29 mai 2005

nikel!!!!
merci beaucoup !!!!
Messages postés
50
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
8 août 2009

Sa me dis sa quand je met ton truc :

g++: -lws2_32: linker input file unused since linking not done

Je comprends pas ... Voici mon code pr le moment :

#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
void main()
{
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("217.174.201.103");
sin.sin_family = AF_INET;
sin.sin_port = htons(6667);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
}

Vous avez une idée ?
Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Ce message apparaît lorsque des libs sont spécifiées alors qu'on demande juste une compilation (et donc, pas une liaison) du fichier avec le commutateur -c. Il est sans gravité !