关于CImage保存功能的问题

时间:2010-12-04 20:49:25

标签: visual-c++

我在保存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控制台应用程序。没有错误。但是,程序完成后,在我的目录下没有创建文件。我在两台机器上运行了这段代码,结果是一样的。

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

2 个答案:

答案 0 :(得分:1)

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

此外,代替强制转换使用c_str()上的_T宏 - 以防它需要转换。

如果您仍然无法解决问题,请获取PROCMON(Microsoft的免费实用程序)。运行它并过滤输出,这样它只是查找包含“image1.bmp”的路径的文件 - 它将告诉您使用该路径尝试的所有文件操作以及发生的事情。

答案 1 :(得分:1)

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

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