Link avec GCC [Résolu]

Signaler
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007
-
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007
-
Bonjours a tous.
Je compile avec gcc sous windows (grâce a mingw). Je ne souhaite pas vous ennuyer en créant un topic redondant, mais je n'arrive pas à régler un pbl sur un sujet plusieurs fois abordé ici. Je compile un exemple d'utilisation des sockets, ici la création d'un serveur dont voici le code :

#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "libws2_32.a")



main()
{



char buffer[255];


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


SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;


sock = socket(AF_INET, SOCK_STREAM, 0);


sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(4444);


bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);


while(1)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
memset(buffer,0,255);
wsprintf(buffer,"Bienvenu sur mon serveur ;)");
send(csock,buffer,255,0);
}
}





}

Le fichier libws2_32.a est naturellement présent dans le répertoire lib. Pour compiler je lance la commande: gcc -lws2_32 source.c
L'option -l permet de linker une librairie d'aprés le tutorial gcc que j'ai lu. Malgés celà le link ne fonctionne pas : undefined reference to [mailto:`WSAStartup@8' `WSAStartup@8'] etc.....

Merci de votre aide.

4 réponses

Messages postés
787
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
Au lieu de cette horreur : #pragma comment(lib, "libws2_32.a")

Met donc ceci dans ta ligne de commande : -lws2_32



Et GCC linkera l'exe en utilisant libws2_32.a, un exemple :

gcc main.c -lws2_32 -o toto.exe
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Petite question: ce prama est-il reconnu par gcc?
#pragma comment(lib, "libws2_32.a")
Je crois que beaucoup de pramas sont specifiques aux compilateurs.
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007

http://www.guru-meditation.net/main.php3?root=110
>"Vous pouvez ensuite effacer si vous le souhaitez les protos et pragmas http://www.guru-meditation.net/main.php3?SEARCHFUNC=(répertoires proto, pragma et pragmas) car GCC ne les utilise pas"

Apparement il semblerait que cela pose problème. Comment passer outre ?
Messages postés
38
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
28 novembre 2007

Merci bien, problème résolu. Je pense que ce sujet aidera d'autre personne.
Merci encore de votre participation :]