Problème linkage

Résolu
Signaler
Messages postés
49
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
10 novembre 2007
-
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
-
Salut à tous!
Je débute les socket en c++ et j'ai un problème à la compilation, est-ce que quelqu'un pourrait m'expliquer, voici mon code :

// Serveur Tcp.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h" ( & tchar.h)
#include <winsock2.h>

int _tmain(int argc, _TCHAR* argv[])
{
    // Variables
    WSADATA wsa;
    SOCKET server, client=0;
    SOCKADDR_IN sin;

    // Initialisation WSA
    WSAStartup(MAKEWORD(2,0),&wsa);

    // Création de la socket serveur & endpoints
    sin.sin_family = AF_INET;
    sin.sin_addr.S_un.S_addr = ADDR_ANY;
    sin.sin_port = htons(12000);

    server = socket(AF_INET, SOCK_STREAM, 0);
    bind(server, (SOCKADDR *)&sin, sizeof(sin));

    system("Pause");

    // Fermeture du serveur
    closesocket(server);

    // Arret WSA
    WSACleanup();

    return 0;
}

voici les erreurs :
Serveur Tcp error LNK2019: symbole externe non résolu __imp__closesocket@4 référencé dans la fonction _main
Serveur Tcp error LNK2019: symbole externe non résolu __imp__htons@4 référencé dans la fonction _main
Serveur Tcp error LNK2019: symbole externe non résolu __imp__socket@12 référencé dans la fonction _main
Serveur Tcp error LNK2019: symbole externe non résolu __imp__WSACleanup@0 référencé dans la fonction _main
Serveur Tcp error LNK2019: symbole externe non résolu __imp__WSAStartup@8 référencé dans la fonction _main
Serveur Tcp fatal error LNK1120: 6 externes non résolus

J'utilise Microsoft Visual C++.
Merci d'avance.

10 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
il faut rajouter la lib ws2_32.lib dans les options du linker ou rajouter au début du source
#pragma comment(lib, "ws2_32.lib")
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
On met winsock2.h avant les autres includes

ULARGE_INTEGERJokyQi=QI("Joky");//OverFlow
Messages postés
49
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
10 novembre 2007

Merci, en ajoutantdnas les options du linker cela marche, cependant avec dev-cpp, en mettant #pragma comment(lib, "ws2_32.lib"), cela produit toujours les mêmes erreurs, de meme avec #pragma comment(lib, "libws2_32.a").
Quel est la difference entre une librairie ".lib" et ".a"?
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
les librairies de visual sont des .lib, celle de devcpp des .a

Les 2 n'utilisent pas le même format

Pour devcpp, il ne faut pas utiliser pragma mais mettre le .a dans les options du linker
Messages postés
49
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
10 novembre 2007

ok merci .
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
ULARGE_INTEGER JokyQi = QI("Joky"); // Arithmetic error: ULARGE_INTEGER can't be negative
Messages postés
49
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
10 novembre 2007

Qu'est ce que cela signifit???
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Non rien une petite boutade par rapport a la signature de Joky
Messages postés
49
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
10 novembre 2007

Ah ok lol
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Mdr et dire que j'voulais plus v'nir regarder ce post :)
Lol j'aurais manqué quelque chose ;)
Bravo pour cette boutade comme tu dis ;)
Mais je t'ai un peu tendu la perche :p
ULARGE_INTEGERJokyQi=QI("Joky");