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

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Compiler un petit bout de C du site Microsoft !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] Compiler un petit bout de C du site Microsoft !

n°438325
Yoyo@
Posté le 24-06-2003 à 17:52:23  profilanswer
 

Salut,  
 
Je suis plutot un débutant avec Visual C++! Aussi, j'aurais besoin de votre aide (je suis sur que c'est facile) pour que le code à la page suivante marche :
 
http://msdn.microsoft.com/library/ [...] points.asp
 
Personnellement, j'ai créé une simple Console Application (Empty Project) et créé un fichier .c, et j'ai lancé le build + compile, et a priori, il me met des erreurs du type :
 
c:\program files\microsoft visual studio\myprojects\rudimentaire\essai.cpp(40) : error C2065: 'GetVolumeNameForVolumeMountPoint' : undeclared identifier
 
Donc, je suppose qu'il manque quelque chose... mais quoi? Dans ce qui est marqué dans les requirements, il me semble que j'ai tout ! (c'est par défaut avec VC++6)
 
Merci pour votre aide.

mood
Publicité
Posté le 24-06-2003 à 17:52:23  profilanswer
 

n°438344
Konar
Posté le 24-06-2003 à 18:05:11  profilanswer
 

ca compile nickel chez moi (mis a part les warnings).
 
t'as bien fais : new project -> win32 application -> console application + empty project ?
 
a mon avis t'as omis le "#define _WIN32_WINNT 0x0501" tout en haut

n°438375
Yoyo@
Posté le 24-06-2003 à 18:16:41  profilanswer
 

Bah moi j'avais fait :
 
New Projects -> Win32 Application -> En Empty Project !
 
Ensuite, j'ai créé un ichier .c, et j'ai lancé la compilation, et il me trouve les 9 erreurs dont je donne la premeire au dessus !
 
Par contre, je viens encore de rééessayer, et j'ai bien inclus tout le code !
 
What's wrong?

n°438386
Konar
Posté le 24-06-2003 à 18:22:00  profilanswer
 

y a "int main(void)" ds le code.
 
faut bien faire :
 
New Project (win32 project) puis ds les application settings, faire Console application + empty project.

n°438401
Yoyo@
Posté le 24-06-2003 à 18:40:02  profilanswer
 

Attends, je fais un Win32 Application ou un Win32 Console Application?
 
Tu dois te dire que je suis un peid, mais il n'est pas possible de suivre à la lettre les steps que tu donnes (je n'ai pas de Win32 Project disponible en tant que tel dans les différents projets possibles)

n°438406
Konar
Posté le 24-06-2003 à 18:44:29  profilanswer
 

tu dois avoir VC6.
 
faut faire 'console' en tout cas.

n°438432
Yoyo@
Posté le 24-06-2003 à 19:19:01  profilanswer
 

Oui, en effet, j'ai VS6 (désolé d'avoir omis ce détail)
 
Donc, j'ai fait :
Win32 Console Application -> Empty Project !
 
Ensuite, j'ai fait new File, et j'ai collé le code et j'exécute, mais ca me donne les erreurs dont je t'ai parlées !
 
en fait, il ne "voit" pas les fonctions...
 
c:\program files\microsoft visual studio\myprojects\tyutyu\dsdsq.cpp(40) : error C2065: 'GetVolumeNameForVolumeMountPoint' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\tyutyu\dsdsq.cpp(54) : error C2065: 'FindNextVolumeMountPoint' : undeclared identifier
 
....

n°438512
Yoyo@
Posté le 24-06-2003 à 22:01:14  profilanswer
 

Bah alors????

n°438568
SquiZZ
Posté le 24-06-2003 à 23:40:56  profilanswer
 

je viens d'essayer de compiler avec vc6.
ca marche pas.
d'après le MSDN, GetVolumeNameForVolumeMountPoint est déclaré dans winbase.h et je l'ai pas dans le mien.
soit faut mettre un service pack à visual studio, soit c'est une nouveauté vs7.

n°438572
Yoyo@
Posté le 24-06-2003 à 23:54:20  profilanswer
 

:sweat:  
 
Euh....Bon, bah j'ai plus qu'a retourner me coucher moi...
 
Arf, c'est vraiment dommage!
 
En tout cas, merci pour ton aide !
 
Moi qui comptais me faire une DLL avec une fonction pour retrouver le num de série de mes Disques durs, si déja ca marche pas ici, c'est clair que ca risque pas de marcher ailleurs...

mood
Publicité
Posté le 24-06-2003 à 23:54:20  profilanswer
 

n°438584
SquiZZ
Posté le 25-06-2003 à 00:41:29  profilanswer
 

si tu veux juste récupérer le numéro de série :

Code :
  1. #include <windows.h>
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5. char volName[256];
  6. DWORD volSerial;
  7. DWORD nameLen;
  8. DWORD volFlags;
  9. char volFS[256];
  10. GetVolumeInformation("c:\\", volName, 256, &volSerial, &nameLen, &volFlags, volFS, 256);
  11. printf("Nom de volume : %s\n", volName);
  12. printf("Numéro de série : %04X-%04X\n", (volSerial >> 16) & 0xffff,  volSerial & 0xffff);
  13. return 0;
  14. }


 
après (ou avant, c'est plus pratique) pour énumérer tes DD  :

Code :
  1. char drive[] = "c:\\";
  2. for (int i = 'c'; i < 'z';  i++ )
  3. {
  4.  drive[0] = (char)i;
  5.  if(GetDriveType(drive) == DRIVE_FIXED)
  6.  {
  7.   printf("HDD %s trouvé\n", drive);
  8.  }
  9. }


 
edit : je promets pas que c'est super codé, y en a peut être qui vont râler que c'est codé avec les pied, mais ca a l'air de pas trop mal marcher pour l'instant.
il te reste plus qu'a MSDNiser GetVolumeInformation et GetDriveType.


Message édité par SquiZZ le 25-06-2003 à 00:53:51
n°438627
Yoyo@
Posté le 25-06-2003 à 02:46:58  profilanswer
 

Parfait, ca marche !  
 
Par contre, je me demande bien pourquoi le code du site de MSoft ne marche pas !
 
Merci en tout cas ;)

n°438689
VisualC++
J'va y penser ...
Posté le 25-06-2003 à 09:39:38  profilanswer
 

Vis a vis de ton pb du code MSN, c koi ton OS ?

n°438819
Konar
Posté le 25-06-2003 à 11:34:39  profilanswer
 

VisualC++ a écrit :

Vis a vis de ton pb du code MSN, c koi ton OS ?


 
c vrai qu'a cause du #define du haut, faut mini un 2000
 
pour la fct ki pose pb, d'apres les man :
Client: Included in Windows XP and Windows 2000 Professional.
Server: Included in Windows Server 2003 and Windows 2000 Server.

n°438866
Yoyo@
Posté le 25-06-2003 à 12:15:54  profilanswer
 

Bah j'ai WinXP Pro, et comme je vous l'ai dit, en fait, toutes les fonctions génèrent une erreur...  :sweat:

n°438869
VisualC++
J'va y penser ...
Posté le 25-06-2003 à 12:19:28  profilanswer
 

Normalement XP Pro devrait passer, mais oui la question c vis a vis de la doc de la fonction c clairment marque en gros noyau NT
 
La je viens de teste un gros copie coller ds un Win32 console vide du code sous VS.Net et ca marche (sous XP pro)

n°438888
gatorette
Posté le 25-06-2003 à 12:41:52  profilanswer
 

Cela semble être un problème de Platform SDK. Tu utilises les headers fournis avec Visual Studio 6.0 qui ne référencent pas ces fonctions (à l'époque Windows 2000 n'était pas sorti).
Il faut donc que tu ailles télécharger le dernier Platform SDK disponible ici pour pouvoir profiter de ces fonctions.


---------------
each day I don't die is cheating
n°438954
Yoyo@
Posté le 25-06-2003 à 13:54:23  profilanswer
 

gatorette a écrit :

Cela semble être un problème de Platform SDK. Tu utilises les headers fournis avec Visual Studio 6.0 qui ne référencent pas ces fonctions (à l'époque Windows 2000 n'était pas sorti).
Il faut donc que tu ailles télécharger le dernier Platform SDK disponible ici pour pouvoir profiter de ces fonctions.


 
D'accord, je veux bien essayer ca, c'est une bonne idée....mais alors, la question, c'est de savoir si, en compilant tout ca dans un Dll, quelqu'un utilisant une autre version de Windows, genre 2000 (ou 98?) sera capable d'utiliser les fonctions incluses dans le dll ! (je compte faire un MFC Regular Dll, car pour le moment, je ne sais pas faire autrement comme Dll pouvant sutiliser avec VBA par exemple)

n°439115
Yoyo@
Posté le 25-06-2003 à 15:16:58  profilanswer
 

Yoyo@ a écrit :


 
D'accord, je veux bien essayer ca, c'est une bonne idée....mais alors, la question, c'est de savoir si, en compilant tout ca dans un Dll, quelqu'un utilisant une autre version de Windows, genre 2000 (ou 98?) sera capable d'utiliser les fonctions incluses dans le dll ! (je compte faire un MFC Regular Dll, car pour le moment, je ne sais pas faire autrement comme Dll pouvant sutiliser avec VBA par exemple)


 
Bah personne pour répondre sur cette question?

n°439122
gatorette
Posté le 25-06-2003 à 15:19:31  profilanswer
 

Tu ne devrais pas avoir de problèmes du moment que tu respectes les indications de la documentation. Par exemple, la fonction FindFirstVolume n'est disponible que sous Windows 2000 et XP.
Le Platform SDK est un SDK et pas une bibliothèque. C'est à dire qu'il n'ajoute pas de nouvelles fonctions mais te permet d'utiliser les fonctions présentes dans les versions récentes de Windows ou celles qui n'étaient pas documentées auparavant.


Message édité par gatorette le 25-06-2003 à 15:20:09

---------------
each day I don't die is cheating
n°439358
Yoyo@
Posté le 25-06-2003 à 17:12:11  profilanswer
 

Merci pour les infos, je comprends mieux now !
 
Il me faut les bons SDK pour compiler et le bon Windows pour exécuter :)
 

mood
Publicité
Posté le   profilanswer
 


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

  [VC++] Compiler un petit bout de C du site Microsoft !

 

Sujets relatifs
[debutant]quelques conseils pour un site[ Delphi ] Construire ou compiler ?
site en CSS qui passe sous IE6, mais pas sous IE5.5 ou antérieur[HTML/CSS] Design d'un site web
petit problème avec une classe PHP[Fonction WEB] Exemple site Msn.fr : News défilantes
[PHP] Se connecter a un site securisé (https) et y recuperer une pagePetit progamme en JAVA et PASCAL
Affichage de l'ip sur site[PHP] Amélioration en rapidité d'un p'tit bout de code
Plus de sujets relatifs à : [VC++] Compiler un petit bout de C du site Microsoft !


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