Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1302 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Compilation sous vc++ .net et linkage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compilation sous vc++ .net et linkage

n°974844
freds45
Posté le 07-02-2005 à 21:57:15  profilanswer
 

'soir,
j'ai crée, sous visual c++ .net, un début de programme, pour tester une classe myftp, dont voici le fichier myftp.h :
 

Code :
  1. #if !defined(_MYFTP_)
  2. #define _MYFTP_
  3. class myftp
  4. {
  5. public:
  6. myftp(char *serveur, char *username, char *password);
  7. ~myftp();
  8. bool envoyerFichier(char *local, char *distant);
  9. bool telechargerFichier(char *local, char *distant);
  10. protected:
  11. private:
  12. HINTERNET handle;
  13. HINTERNET ftphandle;
  14. };
  15. #endif


 
Les différentes méthodes sont écrites dans le fichier myftp.cpp
J'ai bien fait référence à wininet.h dans le fichier stdafx.h, avec un petit :

Code :
  1. #include <WinInet.h>


qui va bien.
 
A coté de ça, j'ai un fichier toto.cpp :

Code :
  1. // toto.cpp : Defines the entry point for the console application.
  2. //
  3. //#include "myftp.h"
  4. #include "stdafx.h"
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7. // myftp *monftp = new myftp("192.168.0.14", "test", "test" );
  8. return(0);
  9. }


 
Le pb maintenant, c'est qu'à la compilation, il n'arrête pas de me dire que le fichier wininet.h contient des erreurs :
 

Compiling...
stdafx.cpp
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(56) : error C2146: syntax error : missing ';' before identifier 'HINTERNET'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(56) : error C2501: 'HINTERNET' : missing storage-class or type specifiers
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(57) : error C2143: syntax error : missing ';' before '*'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(57) : error C2378: 'HINTERNET' : redefinition; symbol cannot be overloaded with a typedef
        c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(56) : see declaration of 'HINTERNET'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinInet.h(57) : error C2501: 'LPHINTERNET' : missing storage-class or type specifiers


 
etc etc...
Pourtant, les fichiers stdafx.cpp ou stdafx.h sont ceux par défaut!
J'ai bien indiqué la lib wininet.lib dans les options de compilation, mais je n'arrive pas à voir ce qui fait que ca ne marche pas!
Qqun peut m'aiguiller ?
Merci!


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
mood
Publicité
Posté le 07-02-2005 à 21:57:15  profilanswer
 

n°974854
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-02-2005 à 22:00:39  profilanswer
 

faut inclure le stdafx.h AVANT le myftp.h


---------------
J'ai un string dans l'array (Paris Hilton)
n°974857
freds45
Posté le 07-02-2005 à 22:02:42  profilanswer
 

Dans myftp.cpp, stdafx.h est inclus avant myftp.h
et dans le toto.cpp, l'include du myftp.h est en commentaire :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°974864
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-02-2005 à 22:11:08  profilanswer
 

mmm c'est bizarre....
essaie de nettoyer et de regénérer ton projet pour voir


---------------
J'ai un string dans l'array (Paris Hilton)
n°974874
freds45
Posté le 07-02-2005 à 22:16:40  profilanswer
 

déjà fait, et ca marche pas :'(
je désespère !


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°974879
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-02-2005 à 22:19:36  profilanswer
 

t'as un "#pragma once" dans ton stdafx ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°974885
freds45
Posté le 07-02-2005 à 22:26:39  profilanswer
 

J'avais ajouté ca
#pragma comment ( lib, "wininet.lib" )
dans le stdafx.h, mais ca change rien du tout :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°974889
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-02-2005 à 22:28:07  profilanswer
 

supprime tout et ne saisis que ça :

Code :
  1. #pragma once
  2. #include <wininet.h>


---------------
J'ai un string dans l'array (Paris Hilton)
n°974894
freds45
Posté le 07-02-2005 à 22:31:19  profilanswer
 

ca change rien non plus :/
j'ai bien fait comme il fallait, "normalement" ?
 
Pour linker le wininet.lib, faut bien le faire dans project/properties/linker/input/additional properties ?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°975016
HelloWorld
Salut tout le monde!
Posté le 08-02-2005 à 01:05:04  profilanswer
 

Il contient quoi ton stdafx.h ? T'as pas mis #include <WinInet.h> un peu trop tôt ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 08-02-2005 à 01:05:04  profilanswer
 

n°975026
freds45
Posté le 08-02-2005 à 01:55:55  profilanswer
 

Code :
  1. // stdafx.h : include file for standard system include files,
  2. // or project specific include files that are used frequently, but
  3. // are changed infrequently
  4. //
  5. //#if !defined(_STDAFX_)
  6. //#define _STDAFX_
  7. //
  8. //#pragma once
  9. //#pragma comment ( lib, "wininet.lib" )
  10. //
  11. //#include <iostream>
  12. //#include <tchar.h>
  13. //
  14. //// TODO: reference additional headers your program requires here
  15. #include <WinInet.h>
  16. //#endif


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°975053
Lam's
Profil: bas.
Posté le 08-02-2005 à 08:07:11  profilanswer
 

Essaye d'inclure "windows.h" avant "wininet.h".
J'ai l'impression qu'il y a quelques headers windows qui sont fainéants et ne le font pas...

n°975165
HelloWorld
Salut tout le monde!
Posté le 08-02-2005 à 10:47:41  profilanswer
 

Oui oui il manque <windows.h>.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°975359
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-02-2005 à 13:50:47  profilanswer
 

HelloWorld a écrit :

Oui oui il manque <windows.h>.


ben il est pas utile, vu que HINTERNET est défini dans wininet.h :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°975361
freds45
Posté le 08-02-2005 à 13:51:33  profilanswer
 

bon, en virant stdafx.h, stdafx.cpp, et en mettant tout ce qu'il faut dans mon fichier cpp principal, ca fonctionne :)
 
#include "windows.h"
#include "wininet.h"
#include <stdio.h>

n°975362
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-02-2005 à 13:52:27  profilanswer
 

euh, faut pas mettre <machin.h> au lieu de "machin.h" ? [:heink]


---------------
J'ai un string dans l'array (Paris Hilton)
n°975366
Lam's
Profil: bas.
Posté le 08-02-2005 à 13:54:54  profilanswer
 

Harkonnen a écrit :

ben il est pas utile, vu que HINTERNET est défini dans wininet.h :??:


Oui, et il est défini ainsi:
typedef LPVOID HINTERNET;
 
Maintenant, dis moi où est défini LPVOID, hein ? hein ?  

n°975372
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-02-2005 à 13:56:34  profilanswer
 

Lam's a écrit :

Oui, et il est défini ainsi:
typedef LPVOID HINTERNET;
 
Maintenant, dis moi où est défini LPVOID, hein ? hein ?


 [:gilbert gosseyn]  
 
[:neowen]


---------------
J'ai un string dans l'array (Paris Hilton)
n°975378
freds45
Posté le 08-02-2005 à 14:01:22  profilanswer
 

Harkonnen a écrit :

euh, faut pas mettre <machin.h> au lieu de "machin.h" ? [:heink]


 
exact [:mlc] ! c'est corrige

n°975384
Lam's
Profil: bas.
Posté le 08-02-2005 à 14:04:46  profilanswer
 

A noter que ça dépend des compilos. Pour VS:
Quoted form
This form instructs the preprocessor to look for include files in the same directory of the file that contains the #include statement, and then in the directories of any files that include (#include) that file. The preprocessor then searches along the path specified by the /I compiler option, then along paths specified by the INCLUDE environment variable.  
 
 
Angle-bracket form
This form instructs the preprocessor to search for include files first along the path specified by the /I compiler option, then, when compiling from the command line, along the path specified by the INCLUDE environment variable.  

n°975388
freds45
Posté le 08-02-2005 à 14:09:12  profilanswer
 

Dans le cas ici, c'est pour mes includes a moi (myftp.h) que je mets des "", pour ceux du compilo c'est <> non ?

n°975389
Lam's
Profil: bas.
Posté le 08-02-2005 à 14:12:37  profilanswer
 

freds45 a écrit :

Dans le cas ici, c'est pour mes includes a moi (myftp.h) que je mets des "", pour ceux du compilo c'est <> non ?


C'est effectivement la meilleure habitude à prendre si tous tes fichiers sont dans le même répertoire...
 

n°975390
freds45
Posté le 08-02-2005 à 14:13:08  profilanswer
 

ok:)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Compilation sous vc++ .net et linkage

 

Sujets relatifs
[C++] problème de compilation (templates inside)[c][unix][gtk]compilation de programmes utilisant gtk+
[usb-skeleton.c] Spécification du kernel de compilation[visual C++ 6] probléme de linkage,!!!!!!!!aidezzzz moiiiiiiiiiiii!!!!
Probleme compilation package sous linux[glut] erreur à la compilation
[Sous LINUX Mandrake] prob de compilation[gcc] Option pour réinitialiser le path de compilation
Compilation GCC + Assemblage NASM, foirage au linkage LDCompilation Visual C++ et Linkage DJGPP : pourquoi ca marche pas?
Plus de sujets relatifs à : Compilation sous vc++ .net et linkage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR