Libws2_32.a : je dois la mettre ou?
Dernière réponse : dans Programmation
bonjour
Je suis en train de lire le tutoriel des sockets et je comprend pas ce que demande l'auteur ici
Sur Windows
Tout d'abord, n'oubliez pas, dans chaque projet que vous créez, d'ajouter le fichier "ws2_32.lib" (pour le compilateur Visual C++) ou "libws2_32.a" (pour les autres) dans votre éditeur de liens. Vous trouverez ce fichier dans le dossier "lib" de votre IDE. J'insiste un peu, car on oublie très souvent de le faire
J'ai trouvé "libws2_32.a" mais ou je dois le mettre ? Avez vous un idée ?
PS: j'ai essayé de le mettre dans le projet code::block mais ça ne marche pas !
Je suis en train de lire le tutoriel des sockets et je comprend pas ce que demande l'auteur ici
Citation :
Sur Windows
Tout d'abord, n'oubliez pas, dans chaque projet que vous créez, d'ajouter le fichier "ws2_32.lib" (pour le compilateur Visual C++) ou "libws2_32.a" (pour les autres) dans votre éditeur de liens. Vous trouverez ce fichier dans le dossier "lib" de votre IDE. J'insiste un peu, car on oublie très souvent de le faire
J'ai trouvé "libws2_32.a" mais ou je dois le mettre ? Avez vous un idée ?
PS: j'ai essayé de le mettre dans le projet code::block mais ça ne marche pas !
Autres pages sur : libws2 dois mettre
Lassé par la pub ? Créez un compte
En fait, ton fichier .a, c'est du code exécutable, c'est une partie de ton programme.
Lorsque tu compiles ton programme, au début, plusieurs fichiers objets (.o pour toi) sont créés et sont aussi du code exécutable.
A la fin de la compilation, il y a le lieur (linker) qui rassemble tout pour faire ton exécutable. C'est là qu'il faut lui indiquer de prendre ta bibliothèque .a
Pour faire ça, dans tous les IDE (comme code::block), il y a un endroit dans les paramètres de ton projet où tu indiques toutes les bibliothèques à lier. Donc, va dans les menus et cherche ces options.
Lorsque tu compiles ton programme, au début, plusieurs fichiers objets (.o pour toi) sont créés et sont aussi du code exécutable.
A la fin de la compilation, il y a le lieur (linker) qui rassemble tout pour faire ton exécutable. C'est là qu'il faut lui indiquer de prendre ta bibliothèque .a
Pour faire ça, dans tous les IDE (comme code::block), il y a un endroit dans les paramètres de ton projet où tu indiques toutes les bibliothèques à lier. Donc, va dans les menus et cherche ces options.
J'ai fais (sous codeblock) pour ajouter une bibliothèque à l'éditeur de liens, Project / Build Options... / linker settings puis add dans la partie link library, puis rechercher libws2_32.a
Mais ça ne marche toujours pas...
J'ai toujours plusieurs erreurs et warning lors de la compilation...
ro\test\\main.c|34|error: `SOCKADDR_IN' undeclared (first use in this function)|
ro\test\\main.c|34|error: (Each undeclared identifier is reported only once|
ro\test\\main.c|34|error: for each function it appears in.)|
ro\test\\main.c|34|error: syntax error before "sin"|
ro\test\\main.c|35|error: `SOCKET' undeclared (first use in this function)|
ro\test\\main.c|36|error: `socklen_t' undeclared (first use in this function)|
ro\test\\main.c|49|error: `sock' undeclared (first use in this function)|
ro\test\\main.c|49|warning: implicit declaration of function `socket'|
ro\test\\main.c|49|error: `AF_INET' undeclared (first use in this function)|
ro\test\\main.c|49|error: `SOCK_STREAM' undeclared (first use in this function)|
ro\test\\main.c|52|error: `INVALID_SOCKET' undeclared (first use in this function)|
ro\test\\main.c|57|error: `sin' undeclared (first use in this function)|
ro\test\\main.c|57|warning: implicit declaration of function `htonl'|
ro\test\\main.c|57|error: `INADDR_ANY' undeclared (first use in this function)|
ro\test\\main.c|59|warning: implicit declaration of function `htons'|
ro\test\\main.c|60|warning: implicit declaration of function `bind'|
ro\test\\main.c|60|error: `SOCKADDR' undeclared (first use in this function)|
ro\test\\main.c|60|error: syntax error before ')' token|
ro\test\\main.c|60|error: `recsize' undeclared (first use in this function)|
ro\test\\main.c|63|error: `SOCKET_ERROR' undeclared (first use in this function)|
ro\test\\main.c|66|warning: implicit declaration of function `listen'|
ro\test\\main.c|74|error: `csock' undeclared (first use in this function)|
ro\test\\main.c|74|warning: implicit declaration of function `accept'|
ro\test\\main.c|74|error: syntax error before ')' token|
ro\test\\main.c|74|error: `csin' undeclared (first use in this function)|
ro\test\\main.c|74|error: `crecsize' undeclared (first use in this function)|
ro\test\\main.c|75|warning: implicit declaration of function `inet_ntoa'|
ro\test\\main.c|75|warning: format argument is not a pointer (arg 3)|
ro\test\\main.c|85|warning: implicit declaration of function `closesocket'|
||=== Build finished: 20 errors, 9 warnings ===|
Mais ça ne marche toujours pas...
J'ai toujours plusieurs erreurs et warning lors de la compilation...
Citation :
ro\test\main.c||In function `main'ro\test\\main.c|34|error: `SOCKADDR_IN' undeclared (first use in this function)|
ro\test\\main.c|34|error: (Each undeclared identifier is reported only once|
ro\test\\main.c|34|error: for each function it appears in.)|
ro\test\\main.c|34|error: syntax error before "sin"|
ro\test\\main.c|35|error: `SOCKET' undeclared (first use in this function)|
ro\test\\main.c|36|error: `socklen_t' undeclared (first use in this function)|
ro\test\\main.c|49|error: `sock' undeclared (first use in this function)|
ro\test\\main.c|49|warning: implicit declaration of function `socket'|
ro\test\\main.c|49|error: `AF_INET' undeclared (first use in this function)|
ro\test\\main.c|49|error: `SOCK_STREAM' undeclared (first use in this function)|
ro\test\\main.c|52|error: `INVALID_SOCKET' undeclared (first use in this function)|
ro\test\\main.c|57|error: `sin' undeclared (first use in this function)|
ro\test\\main.c|57|warning: implicit declaration of function `htonl'|
ro\test\\main.c|57|error: `INADDR_ANY' undeclared (first use in this function)|
ro\test\\main.c|59|warning: implicit declaration of function `htons'|
ro\test\\main.c|60|warning: implicit declaration of function `bind'|
ro\test\\main.c|60|error: `SOCKADDR' undeclared (first use in this function)|
ro\test\\main.c|60|error: syntax error before ')' token|
ro\test\\main.c|60|error: `recsize' undeclared (first use in this function)|
ro\test\\main.c|63|error: `SOCKET_ERROR' undeclared (first use in this function)|
ro\test\\main.c|66|warning: implicit declaration of function `listen'|
ro\test\\main.c|74|error: `csock' undeclared (first use in this function)|
ro\test\\main.c|74|warning: implicit declaration of function `accept'|
ro\test\\main.c|74|error: syntax error before ')' token|
ro\test\\main.c|74|error: `csin' undeclared (first use in this function)|
ro\test\\main.c|74|error: `crecsize' undeclared (first use in this function)|
ro\test\\main.c|75|warning: implicit declaration of function `inet_ntoa'|
ro\test\\main.c|75|warning: format argument is not a pointer (arg 3)|
ro\test\\main.c|85|warning: implicit declaration of function `closesocket'|
||=== Build finished: 20 errors, 9 warnings ===|
Ah oui, là c'est avant le problème du linker, c'est un problème de compilation, parce que tu n'as pas inclus les fichier .h qui définissent toutes les structures et nom de fonctions. Donc, mets le #include <le_fichier.h> qui va bien là.
ps: pas besoin de faire un Up au bout de quelques heures... (si ça m'énerve trop, je risque de ne plus répondre
)
ps: pas besoin de faire un Up au bout de quelques heures... (si ça m'énerve trop, je risque de ne plus répondre
)
C'est déjà fait..
Voici mon code pour mieux comprendre le problème :
Voici mon code pour mieux comprendre le problème :
#if defined (WIN32)
#include <winsock2.h>
typedef int socklen_t;
#elif defined (linux)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close(s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
#endif
#include <stdio.h>
#include <stdlib.h>
#define PORT 23
int main(void)
{
#if defined (WIN32)
WSADATA WSAData;
int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
#else
int erreur = 0;
#endif
/* Socket et contexte d'adressage du serveur */
SOCKADDR_IN sin;
SOCKET sock;
socklen_t recsize = sizeof(sin);
/* Socket et contexte d'adressage du client */
SOCKADDR_IN csin;
SOCKET csock;
socklen_t crecsize = sizeof(csin);
int sock_err;
if(!erreur)
{
/* Création d'une socket */
sock = socket(AF_INET, SOCK_STREAM, 0);
/* Si la socket est valide */
if(sock != INVALID_SOCKET)
{
printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock);
/* Configuration */
sin.sin_addr.s_addr = htonl(INADDR_ANY); /* Adresse IP automatique */
sin.sin_family = AF_INET; /* Protocole familial (IP) */
sin.sin_port = htons(PORT); /* Listage du port */
sock_err = bind(sock, (SOCKADDR*)&sin, recsize);
/* Si la socket fonctionne */
if(sock_err != SOCKET_ERROR)
{
/* Démarrage du listage (mode server) */
sock_err = listen(sock, 5);
printf("Listage du port %d...\n", PORT);
/* Si la socket fonctionne */
if(sock_err != SOCKET_ERROR)
{
/* Attente pendant laquelle le client se connecte */
printf("Patientez pendant que le client se connecte sur le port %d...\n", PORT);
csock = accept(sock, (SOCKADDR*)&csin, &crecsize);
printf("Un client se connecte avec la socket %d de %s:%d\n", csock, inet_ntoa(csin.sin_addr), htons(csin.sin_port));
}
else
perror("listen");
}
else
perror("bind");
/* Fermeture de la socket client et de la socket serveur */
printf("Fermeture de la socket client\n");
closesocket(csock);
printf("Fermeture de la socket serveur\n");
closesocket(sock);
printf("Fermeture du serveur terminée\n");
}
else
perror("socket");
#if defined (WIN32)
WSACleanup();
#endif
}
return EXIT_SUCCESS;
}
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumProbleme de programmation en assembleur
- ForumProgrammes ti 83 tutoriel
- ForumGestionnaire de bureau windows xp
- ForumTutoriel configuration bios
- ForumTutoriel creation site web php mysql
- ForumFaire tourner un programme windows sous linux
- ForumTutoriel créer son avatar
- ForumTutoriel x3 reunion
- ForumTutoriel creer un site avec google
- ForumTutoriel inserer un lien dans une image
- Voir plus
).