2010-12-04 88 views
2

保存CImage类数据时遇到问题。以下是我的简要设置:关于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; 
} 

我在VC++ 2008下运行它作为WIN32控制台应用程序。没有错误。但是,在程序完成后,我的目录下没有创建任何文件。我在两台机器上运行这个代码,结果是一样的。

非常感谢您的时间和精力。

回答

1

也许你只是在错误的地方找的文件。给绝对路径。相对路径是进程当前的工作目录。如果您从调试器运行,它可能是可执行文件的输出目录,项目目录或其他位置。

此外,而不是演员使用c_str()上的_T宏 - 以防万一需要转换。

如果您仍然无法弄清楚,请获取PROCMON(Microsoft提供的免费实用程序)。运行它并过滤输出,以便只查找包含“image1.bmp”路径的文件 - 它会告诉您所有已使用该路径尝试过的文件操作以及发生了什么。

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

1)检查结果
2)你为什么要使用类型转换?这可以掩盖该错误,例如如果您使用UNICODE构建(VS2008中的默认版本),则文件名将无效