2010-12-04 90 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中的默認版本),則文件名將無效