Compilation sous vc++ .net et linkage - C++ - Programmation
Marsh Posté le 07-02-2005 à 22:00:39
faut inclure le stdafx.h AVANT le myftp.h
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
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
Marsh Posté le 07-02-2005 à 22:16:40
déjà fait, et ca marche pas
je désespère !
Marsh Posté le 07-02-2005 à 22:19:36
t'as un "#pragma once" dans ton stdafx ?
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
Marsh Posté le 07-02-2005 à 22:28:07
supprime tout et ne saisis que ça :
Code :
|
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 ?
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 ?
Marsh Posté le 08-02-2005 à 01:55:55
Code :
|
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...
Marsh Posté le 08-02-2005 à 10:47:41
ReplyMarsh 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
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>
Marsh Posté le 08-02-2005 à 13:52:27
euh, faut pas mettre <machin.h> au lieu de "machin.h" ?
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 ?
Marsh Posté le 08-02-2005 à 13:56:34
Lam's a écrit : Oui, et il est défini ainsi: |
Marsh Posté le 08-02-2005 à 14:01:22
ReplyMarsh 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.
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 ?
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...
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 :
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 :
qui va bien.
A coté de ça, j'ai un fichier toto.cpp :
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