Compilation sous vc++ .net et linkage

Compilation sous vc++ .net et linkage - C++ - Programmation

Marsh Posté le 07-02-2005 à 21:57:15    

'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
Reply

Marsh Posté le 07-02-2005 à 21:57:15   

Reply

Marsh Posté le 07-02-2005 à 22:00:39    

faut inclure le stdafx.h AVANT le myftp.h


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-02-2005 à 22:02:42    

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
Reply

Marsh Posté le 07-02-2005 à 22:11:08    

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)
Reply

Marsh Posté le 07-02-2005 à 22:16:40    

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


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 07-02-2005 à 22:19:36    

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-02-2005 à 22:26:39    

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
Reply

Marsh Posté le 07-02-2005 à 22:28:07    

supprime tout et ne saisis que ça :

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-02-2005 à 22:31:19    

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
Reply

Marsh Posté le 08-02-2005 à 01:05:04    

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
Reply

Marsh Posté le 08-02-2005 à 01:05:04   

Reply

Marsh Posté le 08-02-2005 à 01:55:55    

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
Reply

Marsh Posté le 08-02-2005 à 08:07:11    

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...

Reply

Marsh Posté le 08-02-2005 à 10:47:41    

Oui oui il manque <windows.h>.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 08-02-2005 à 13:50:47    

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)
Reply

Marsh Posté le 08-02-2005 à 13:51:33    

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>

Reply

Marsh Posté le 08-02-2005 à 13:52:27    

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 08-02-2005 à 13:54:54    

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 ?  

Reply

Marsh Posté le 08-02-2005 à 13:56:34    

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)
Reply

Marsh Posté le 08-02-2005 à 14:01:22    

Harkonnen a écrit :

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


 
exact [:mlc] ! c'est corrige

Reply

Marsh Posté le 08-02-2005 à 14:04:46    

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.  

Reply

Marsh Posté le 08-02-2005 à 14:09:12    

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

Reply

Marsh Posté le 08-02-2005 à 14:12:37    

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...
 

Reply

Marsh Posté le 08-02-2005 à 14:13:08    

ok:)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed