2010-12-04 3 views
2

J'ai rencontré un problème lors de l'enregistrement des données de classe CImage. Voici mes brève mise en place:Question sur la fonction d'enregistrement CImage

#include "stdafx.h" 
#include <cstring> 
#include <atlimage.h> 
#include <vector> 
#include <stdlib.h> 
#include <cmath> 
#include <algorithm> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    CImage myimage; 
    myimage.Create(100,100,24); 
    // save an image in BMP format 
    string impath = "image1.bmp"; 
    myimage.Save((LPCTSTR)impath.c_str()); 
    return 0; 
} 

Je l'ai couru comme une application console WIN32 sous VC++ 2008. Il n'y a pas d'erreur. Cependant, une fois le programme terminé, aucun fichier n'est créé dans mon répertoire. J'ai exécuté ce code sur deux machines, et les résultats sont les mêmes.

Merci beaucoup pour votre temps et vos efforts.

Répondre

1

Peut-être cherchez-vous simplement au mauvais endroit pour le fichier. Donne un chemin absolu. Le chemin relatif est au répertoire de travail actuel du processus. Si vous exécutez à partir du débogueur, il peut s'agir du répertoire de sortie de l'exécutable, du répertoire du projet ou d'un autre emplacement.

En outre, au lieu de la conversion utiliser la macro _T sur c_str() - dans le cas où il a besoin d'une conversion.

Si vous n'arrivez toujours pas à le comprendre, obtenez PROCMON (utilitaire gratuit de Microsoft). Exécutez-le et filtrez la sortie de sorte qu'il ne cherche que le fichier avec le chemin contenant "image1.bmp" - il vous dira toutes les opérations de fichiers qui ont été essayées avec ce chemin et ce qui s'est passé.

1
myimage.Save((LPCTSTR)impath.c_str()); 

1) chèque résultat
2) Pourquoi avez-vous utilisé la coulée de type? cela peut masquer le bug, par ex. Si vous utilisez UNICODE build (par défaut dans VS2008), le nom de fichier sera invalide