Problème winsock2.h et ws2_32.lib

Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009 - 31 oct. 2008 à 09:09
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 31 oct. 2008 à 11:05
Bonjour,

Pour une application j'ai besoin d'implémenter un serveur et un client UDP. Je n'ai pas de problème en ce qui concerne les fonctions à utiliser. En revanche, j'ai des problème au niveau du link des librairie.

J'utilise Visual Studio 2008
J'ai mis le #include <winsock2.h>
J'ai ajouté ws2_32.lib au linker pour la compilation (additional dependencies).

Lors du linking j'obtiens l'erreur suivante:
fonctions.obj : error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function "void __cdecl saisir_port(struct sockaddr_in *)" (?saisir_port@@YAXPAUsockaddr_in@@@Z)

et ça pour chaque fonction du socket que j'utilise (listen, sendto, recvfrom, inet_addr, etc).

Quand j'ajoute #pragma comments(lib,"ws_32.lib") j'obtiens l'erreur suivante:
warning C4068: unknown pragma

Que faire?

merci d'avance..
A voir également:

12 réponses

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 09:34
Salut,

J'ai une petite appli de test (MFC), et j'ai pas de souci, je dirais même que ws2_32.lib est par défaut (contrairement à VC6).
Quel est ton genre de projet ? MFC,Win32, console ?
0
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 09:43
C'est sur une console.

Mais c'est quoi exactement la différence entre Win32 et console? et c'est quoi MFC?
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 10:03
En gros ca ne change pas les mêmes bibliothèsques par défaut.

Je viens de faire un test avec Console.
Par défaut, j'ai l'erreur. Mais quand j'ajoute ws2_32.lib dans les dépendances, ça link bien.

je comprends pas ton pb, tu n'as pas fait une erreur bête style faute de frappe ? (ca m'arrive )
0
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 10:19
Je ne fais pas de faute de frappe... non je déconne, mais j'ai bien vérifié.

Par contre j'ai essayé autre chose et ça devient vraiment louche:
Sur mon PC j'ai visual studio c++ 2008, j'ai copier le projet sur un autre PC avec Visual C++ 6.0 et ça marche (en ajoutant ws2_32.lib dans les dépendances du linker)

Où doit se trouver le fichier ws2_32.lib? on le laisse dans system32 et le linker va le chercher ou il faut l'avoir dans le dossier des codes sources? et pour winsock2.h?
Et est-ce que l'ajout de la dépendance est casse sensitive? j'ai fait quelques essais et ça change rien.

Dans les options du linker est-ce qu'il faut changer "Additional library Directories"?

L'interface de modification des propriétés du projet est différentes entre la version 2008 et la 6.0; peut-etre qu'il faut changer autre chose?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 10:32
En fait je me demande si j'ai pas un problème d'imbrication des includes (ça devrait pas comme ça marche sur l'autre PC mais bon..)
J'ai 3 fichiers:
=> main.cpp:
#include <winsock2.h>
#include <stdio.h>
#include "fonctions_utilisateur.h"
void main() {
}

=> fct_user.cpp:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include "fct_user.h

=> fct_user.h:
#include <winsock2.h>
0
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 10:34
petite erreur de copie du code précédent, dans main.cpp:
#include <winsock2.h>
#include <stdio.h>
#include "fct_user.h"
void main() {
}
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 10:40
En effet tu dois avoir un pb avec ton environnement.

Je viens de regardé dans les options de VS2008, rubrique VC++ Directories. Je ne sais pas trop ce que tu as dedans, mais pas evident de comparer nos config.
Sinon, as-tu essayé de claqué le chemin complet ? "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\ws2_32.lib" ?
J'ai vc6 et VS 2008 sur la meme machine, donc j'ai du mal savoir si "C:\Program Files\Microsoft SDKs\Windows" existe avec VS2008 seul.

Sinon, méthode pas propre, tu rapatries la lib du poste vc6.
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 10:42
Ah oui gaffe à winsock2.h qui n'aime pas la double déclaration avec windows.h, je faut faire attention à l'ordre, mais je ne sais plus lequel est le bon
0
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 10:51
Avec VS2008 seul y'a bien C:\Program Files\Microsoft SDKs\Windows. Et après y'a les 2 dossier v5.0 et v6.0A.

J'ai essayé en mettant le chemin complet dans les options du linker et l'erreur a changé:

1>Linking...
1>LINK : fatal error LNK1181: cannot open input file 'C:\Program.obj'

Alors là je vois pas du tout ce qu'il veut? D'où peut venir une erreur pareil?

Je vais encore essayer de changer un peu les includes pour voir.
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 10:53
Ah la la !! C'est le manque d'expérience ça !!!

Il y a des espaces dans ton chemin, donc il faut mettre les guillements comme dans l'exemple que je t'ai mis.
0
Lefoudeboard Messages postés 11 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 mars 2009
31 oct. 2008 à 11:00
ok j'ai mis les guillemets et les erreurs de départ sont de retour...
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 11:05
Là je sèche !!
0
Rejoignez-nous