compilation visual C++

compilation visual C++ - C++ - Programmation

Marsh Posté le 13-02-2006 à 15:14:53    

Bonjour,
 
Je code actuellement un programme permettant d'extraire les images d'une vidéo et de les convertir en bitmap.
Voici quelques erreurs que je ne comprends pas à la compilation :  
'CreateFromPackedDIBPointer' : undeclared identifiers
'CreateFromPackedDIBPointer' : redefinition; different type modifiers
fatal error : unexpected end of file found
 
La fin de mon code est la suivante et je ne sais pas ce qui manque :  
if (fp!=NULL)
{
fwrite...
}
else
{
printf...;
return FALSE;
}
 
Quelqu'un pourrait m'aider svp?? :jap:

Reply

Marsh Posté le 13-02-2006 à 15:14:53   

Reply

Marsh Posté le 13-02-2006 à 17:15:09    

Pour les functions DIB, c'est surement un probleme de #include etc... Pour le unexpected end of file, c'est surement un mismatch entre les  { et les }..mais cela ne vient pas forcement de la fin du fichier...
Il faut verifier tout le fichier, surtout les { des blocks if/else ou do/while, ne pas oublier le } final ..

Reply

Marsh Posté le 13-02-2006 à 17:27:44    

Merci beaucoup pour ta réponse. T'aurais pas une idée du #include qu'il me manque par hasard????

Reply

Marsh Posté le 13-02-2006 à 18:59:13    

Reply

Marsh Posté le 14-02-2006 à 09:11:43    

Salut,
 
Je suis partie de suis là ma

Reply

Marsh Posté le 14-02-2006 à 09:12:18    

mais finalement j'ai changé car j'avais trop d'erreurs avec celui là. Cependant ils sont quasiment identiques!!!!

Reply

Marsh Posté le 14-02-2006 à 09:35:15    

Voici l'adresse du code que j'ai utilisé : http://www.experts-exchange.com/Pr [...] 10679.html

Reply

Marsh Posté le 14-02-2006 à 10:18:03    

Ils sont loin d'être indentiques du point de vue de la programmation : le code source de ton dernier lien ne fait pas appel aux MFC mais uniquement au C et à l'API Windows standard. Ton code précédent faisait lui appel aux MFC (assez maladroitement par certains aspects d'ailleurs). ;)
 
Il me semble que le second code source est mal indexé : il ne devrait pas être classé dans C++ car il n'y a pas un gramme d'objet dedans.


Message édité par slash33 le 14-02-2006 à 10:23:37
Reply

Marsh Posté le 14-02-2006 à 10:19:04    

ah....

Reply

Marsh Posté le 14-02-2006 à 10:19:57    

Il faudrait que je parte de l'autre alors?

Reply

Marsh Posté le 14-02-2006 à 10:19:57   

Reply

Marsh Posté le 14-02-2006 à 10:30:06    

Non rien ne t'y oblige. Les fonctions portent les même noms et réalisent la même opération. La différence réside dans les types de paramètres des fonctions, l'un étant un type C standard char* et l'autre un objet MFC CString.
 
Remarque: dans les deux cas le type du paramètre szFileName n'est pas approprié : il vaut mieux un const char* ou un LPCTSTR en MFC (macro MFC pour const char*).

Reply

Marsh Posté le 14-02-2006 à 10:31:14    

slash33 a écrit :

(macro MFC pour const char*).


 
pas exactement. C'est une macro permettant de switcher facilement entre une appli en MBCS et une appli en Unicode.

Reply

Marsh Posté le 14-02-2006 à 10:32:22    

Que signifie macro?

Reply

Marsh Posté le 14-02-2006 à 10:33:20    

qu'il va falloir songer serieusement à apprendre les bases du  C/C++

Reply

Marsh Posté le 14-02-2006 à 10:33:49    

Là je compile avec le code MFC et j'ai les memes erreurs a la compilation    CreateFromPackedDIBPointer : undeclared identifier

Reply

Marsh Posté le 14-02-2006 à 10:34:42    

Pourtant j'ai des bouquins et j'ai eu des cours et j'en ai jamais entendu parler!!

Reply

Marsh Posté le 14-02-2006 à 10:35:27    

ptain mais sors toi les doigts du cul [:pingouino]
 
http://web6.codeproject.com/audio/ [...] ct=1082060
 
elle est la, en gros, ta fonction
 

Code :
  1. BOOL CreateFromPackedDIBPointer(LPBYTE pDIB, int iFrame)
  2. {
  3.     ASSERT(pDIB!=NULL);
  4.     //Creates a full-color (no palette) DIB from a pointer to a
  5.     //full-color memory DIB
  6.     //get the BitmapInfoHeader
  7.     BITMAPINFOHEADER bih;
  8.     RtlMoveMemory(&bih.biSize, pDIB, sizeof(BITMAPINFOHEADER));
  9.     //now get the bitmap bits
  10.     if (bih.biSizeImage < 1)
  11.     {
  12.         return FALSE;
  13.     }
  14.     BYTE* Bits=new BYTE[bih.biSizeImage];
  15.     RtlMoveMemory(Bits, pDIB + sizeof(BITMAPINFOHEADER), bih.biSizeImage);
  16.     //and BitmapInfo variable-length UDT
  17.     BYTE memBitmapInfo[40];
  18.     RtlMoveMemory(memBitmapInfo, &bih, sizeof(bih));
  19.     BITMAPFILEHEADER bfh;
  20.     bfh.bfType=19778;    //BM header
  21.     bfh.bfSize=55 + bih.biSizeImage;
  22.     bfh.bfReserved1=0;
  23.     bfh.bfReserved2=0;
  24.     bfh.bfOffBits=sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER); //54
  25.    
  26.     CString FileName;
  27.     FileName.Format("Frame-%05d.bmp", iFrame);
  28.    
  29.     FILE* fp=fopen(FileName, "wb" );
  30.     if (fp!=NULL)
  31.     {
  32.         fwrite(&bfh, sizeof(bfh), 1, fp);
  33.         fwrite(&memBitmapInfo, sizeof(memBitmapInfo), 1, fp);
  34.         fwrite(Bits, bih.biSizeImage, 1, fp);
  35.         fclose(fp);
  36.     }
  37.     else
  38.     {
  39.         TRACE0(_T("Error writing the bitmap file" ));
  40.         return FALSE;
  41.     }
  42.     delete [] Bits;
  43.     return TRUE;
  44. }


Reply

Marsh Posté le 14-02-2006 à 10:35:41    

elo29 a écrit :

Pourtant j'ai des bouquins et j'ai eu des cours et j'en ai jamais entendu parler!!


 
ué, genre t'as jamais entendu parler de #define

Reply

Marsh Posté le 14-02-2006 à 10:36:38    

Si, mais si tu pouvais parler correctement ça m'arrangerait!!!!!

Reply

Marsh Posté le 14-02-2006 à 10:37:43    

elo29 a écrit :

Si, mais si tu pouvais parler correctement ça m'arrangerait!!!!!


 
nan mais tu rigoles jean louis ? tu tapes CreateFromPackedDIBPointer dans google et tu trouves directement la réponse. Bouge toi quoi, ou dit autrement "aide toi le ciel t'aideras", c'est pas l'assistance publique ici


Message édité par chrisbk le 14-02-2006 à 10:38:10
Reply

Marsh Posté le 14-02-2006 à 10:38:45    

Tu n'a jamais vu de #define ??
 
// Définit une chaîne constante
#define THIS_IS_MY_STRING_VAR   "this is a string value"
// Définit une macro qui rend la valeur maximale entre deux valeurs
#define MY_MINMAX(a,b) ((a) > (b) ? (a) : (b))
 
C'est une horreur. A proscrire en C++ sauf usage spécifique et justifié.


Message édité par slash33 le 14-02-2006 à 10:40:02
Reply

Marsh Posté le 14-02-2006 à 10:39:35    

eh bien j'ai tapé exactement ça mais ça ne marche pas!!!!!!!!

Reply

Marsh Posté le 14-02-2006 à 10:40:50    

Et tu veux vraiment pas apprendre les bases du C/C++ avant ?  
 
(a tous les coups il utilise sa fonction avant de l'avoir déclaré / définie)

Reply

Marsh Posté le 14-02-2006 à 10:42:19    

Va savoir. Il ne n'a pas fourni le détail des erreurs de compilation et il a oublié que les exemples publiés sur les pages HTML ne sont pas utilisables en l'état : il faut inclure les en-têtes qui vont bien.

Message cité 1 fois
Message édité par slash33 le 14-02-2006 à 10:43:42
Reply

Marsh Posté le 14-02-2006 à 10:42:37    


Au fait pourquoi avoir changé de topic ?
http://forum.hardware.fr/hardwaref [...] 4772-1.htm


Message édité par slash33 le 14-02-2006 à 10:44:40
Reply

Marsh Posté le 14-02-2006 à 10:43:37    

slash33 a écrit :

Va savoir. Il ne n'a pas fourni le détail des erreurs de compilation et il a oublié que les exemples publiés sur les pages HTML ne sont pas utilisables en l'état : il faut rajouter l'inclusion des en-tête qui vont bien.


 
 
bah si, un peu quand meme, on ne peut pas lui retirer ca
 

Code :
  1. CreateFromPackedDIBPointer : undeclared identifier


 
maintenant c'est sur qu'on sait pas trop ce qu'il a fait, s'il a bien penser a mettre ca dans son .cpp ou s'il a copier coller le code dans paint...

Reply

Marsh Posté le 14-02-2006 à 10:44:10    

Bien sur que si j'ai déjà vu un #define mais je ne comprends pas macro, c'est tout!

Reply

Marsh Posté le 14-02-2006 à 10:45:29    

Bon et bien je laisse tomber! je suis venu chercher de l'aide et surement pas qu'on me parle comme cela  (chrisbk)!

Reply

Marsh Posté le 14-02-2006 à 10:46:03    

et c'est 'elle' pour ta gouverne!

Reply

Marsh Posté le 14-02-2006 à 10:46:32    

hé bah laisse tomber, c'est pas moi que ca derange. Néanmoins, a l'avenir et si jamais tu sens a nouveau l'envie de revenir jouer les pleureuses, pense a etre un peu plus précis dans tes questions (genre poster le code foireux). En attendant, je ne peux que te conseiller la lecture d'un solide bouquin de C++

Reply

Marsh Posté le 14-02-2006 à 10:46:57    

elo29 a écrit :

et c'est 'elle' pour ta gouverne!


 
chouette.

Reply

Marsh Posté le 14-02-2006 à 10:47:58    

Néanmoins il n'a pas tort. Si tu ne sais pas ce qu'est une macro tu manques peut-être des connaissances nécessaires à la mise en oeuvre de ta solution.
 
Là chrisbk t'explique qu'il te manque peut-être la déclaration de la fonction CreateFromPackedDIBPointer et il n'a pas du tout tort.

Reply

Marsh Posté le 14-02-2006 à 10:51:42    

slash33 a écrit :


Là chrisbk t'explique qu'il te manque peut-être la déclaration de la fonction CreateFromPackedDIBPointer et il n'a pas du tout tort.


 
Pour l'explication: un compilo C/C++ doit connaitre ce que tu utilises avant que tu ne l'utilise
 
soi tu mets le code de CreateDIBPacketBidule avant ta fonction utilisant ledit code, soit tu declares ta fonction avant (cf cours)
 

Reply

Marsh Posté le 14-02-2006 à 10:52:42    

Ton projet doit comporter:
- la déclaration de la fonction CreateFromPackedDIBPointer dans un fichier d'en-tête .H
- l'implémentation de cette fonction dans un fichier .C ou .CPP. Ce fichier doit inclure le fichier d'en-tête dans lequel la fonction est déclarée.


Message édité par slash33 le 14-02-2006 à 10:53:46
Reply

Marsh Posté le 14-02-2006 à 11:06:06    

ok,merci quand même pour les réponse!!!    

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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