Problm de Linkage

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007 - 20 mai 2004 à 01:32
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007 - 21 mai 2004 à 22:38
J'ai ce code à compiler sous MSVC 6. Or, bien que mes options de Link soient justes (il me semble), j'obtiens une erreur de linkage:

fatal error C1083: Cannot open include file: 'winhand_.h': No such file or directory

Voici le code en question (aurais-je oublié une dépendance ou une option quelconque) Merci pour les réponses:

#include "stdafx.h"
#include "winsock2.h"
#pragma comment (lib,"Ws2_32.lib")

int _tmain(int argc, _TCHAR* argv[])
{

WSAData wd;
WSAStartup(MAKEWORD( 1, 1 ), &wd);

SOCKET sock;
sock=WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);

struct sockaddr_in sin;
int size = sizeof(sin);
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(7777);
sin.sin_addr.s_addr = inet_addr("127.0.0.1");

bind(sock, (struct sockaddr*)&sin, size);
listen(sock,1);
int newsock = accept(sock,0,0);
closesocket(sock);

PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES; si.hStdInput si.hStdOutput si.hStdError = ( HANDLE) newsock;
CreateProcess( NULL, "cmd.exe", NULL, NULL, TRUE, 0, 0, NULL, &si, &pi);

return 0;
}

7 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
20 mai 2004 à 02:38
c'est pas une erreur de linkage, juste le compilateur ne trouve pas le fichier 'winhand_.h' auquel tu dois faire reférence dans stdafx.h. sinon essaie d'ajouter 'windows.h'.
si ca marche tjrs pas je vois pas trop...
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
20 mai 2004 à 15:03
je vais essayer ton astuce, merci à toi.
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
20 mai 2004 à 15:05
Sinon quelqu'un aurait-il l'extrème gentillesse de tenter une compilation pour voir si le problm est identique ou si c'est juste chez moi. merci ++
(attention c'est un shell redirection sur socket)
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 mai 2004 à 15:15
t'as quoi exactement dans "stdafx.h" ?
0

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

Posez votre question
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
20 mai 2004 à 23:53
J'ai essayé d'ajouter 'windows.h' mais ça ne marche pas. je passe mon temps à modifier les options et dépendances mais j'arrive pas à trouver le problm ++
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
21 mai 2004 à 12:59
D'après ce que j'ai regardé "winhand_.h" fait partie des fichiers sources des MFC situés dans "MFC\Src" normalement. C'est pas normal que ce fichier soit inclus. Le seul fichier susceptible de l'inclure est le fichier "StdAfx.h" situé lui aussi dans "MFC\Src" qui ne sert que pour construire les lib des MFC et ne doit pas être inclus dans le projet (les fichiers de ce répertoires ne sont là qu'a titre d'information sur comment est fait l'architecture MFC).

Le "StdAfx.h" que tu doit utiliser est un fichier à toi qui sert pour les entêtes précompilées pour que la compilation aille plus vite en y mettant les entêtes qui ne sont jamais (ou très peu) modifiées. Dans ton cas, il devrait contenir :
#ifndef AFX_SDTAFX_H_INCLUDED_
#define AFX_SDTAFX_H_INCLUDED_
#include <windows.h>
#include <winsock2.k>
/// autres entêtes standards
#endif AFX_SDTAFX_H_INCLUDED_

si tu ne veux pas avoir à inclure un tel fichier précompilé dans toutes tes sources ".cpp", il faut créer un projet Win32 VIDE, y ajouter ton fichier source, y mettre ton code sans #include "StdAfx.h" et avec toutes les autres entêtes (<windows.h> en premier suivi de <winsock2.h> et autres). Il faut aussi rajouter les lib dans les options du projets, onglet "link", champs "object/librairy modules" ou utiliser le #pragma.
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
21 mai 2004 à 22:38
J'ai pas tout compris ce que tu m'explique mais en attendant, ça marche enfin! Merci beaucoup à toi 'ymca2003', tes explications m'ont simplifiées le travail. Encore merci et ++
0
Rejoignez-nous