У меня есть база кода C ++, которая работает в течение длительного времени.Кодовая база представляла собой устаревший набор проектов VS 2003, который я недавно перенес на VS 2008. Миграция оказалась успешной в том, что полученная программа была собрана и запущена.
Я переустановил свою ОС и все приложения нановый диск, и теперь, когда я пытаюсь отладить программу в отладчике, я получаю ошибку подтверждения внутри CRT chsize
(на самом деле, _chsize_s
).В частности (обрезано до базовых, игнорируя проверки безопасности):
FILE * testfile = fopen("P:\\_Dan\\local\\foogoo.txt", "w");
int filehandle = fileno(testfile);
chsize(filehandle, 0);
fwrite("goohoo", 1, 6, testfile);
fclose(testfile);
Утверждение об отладке происходит в пределах chsize
- в частности, в файле исходного кода CRT chsize.c, в следующей строке:
_VALIDATE_CLEAR_OSSERR_RETURN_ERRCODE((_osfile(filedes) & FOPEN), EBADF);
... где filedes
соответствует filehandle
.
Возможно, проблема заключается в том, что в новой системе не установлена более старая версия VS (только VS 2008), посколькунекоторым сторонним библиотекам требуется распространяемый VS 8.0 - даже если на старой системе все складывается и работает нормально с использованием VS 2008. Поэтому я установил VS 2005 (а не 2003).Тем не менее проблема продолжает возникать.
Любые предложения будут очень приветствуются.
* Обновление - проблема не связана с chsize
.Смотрите мой ответ ниже.