Вопрос о функции сохранения CImage - PullRequest
2 голосов
/ 04 декабря 2010

Я столкнулся с проблемой при сохранении данных класса 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;
}

Я запустил его как консольное приложение WIN32 под VC ++ 2008. Нет ошибки. Тем не менее, после того, как программа завершена, в моем каталоге НЕТ файла Я запустил этот код на двух машинах, и результаты совпадают.

Большое спасибо за ваше время и усилия.

Ответы [ 2 ]

1 голос
/ 28 декабря 2010
myimage.Save((LPCTSTR)impath.c_str());

1) результат проверки2) почему вы использовали приведение типов?это может маскировать ошибку, например, если вы используете сборку UNICODE (по умолчанию в VS2008), имя файла будет недействительным

1 голос
/ 04 декабря 2010

Может быть, вы просто ищете неправильное место для файла. Дайте абсолютный путь. Относительный путь к текущему рабочему каталогу процесса. Если вы запускаете из отладчика, это может быть выходной каталог исполняемого файла, каталог проекта или где-то еще.

Кроме того, вместо приведения используйте макрос _T в c_str () - на случай, если потребуется преобразование.

Если вы все еще не можете понять это, получите PROCMON (бесплатная утилита от Microsoft). Запустите его и отфильтруйте вывод, чтобы он просто искал файл с путем, содержащий «image1.bmp» - он расскажет вам обо всех файловых операциях, которые были предприняты с этим путем, и что произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...