我有一个C++代码库已经运行了很长时间。这个代码库是一个传统的VS 2003项目集,我最近将其迁移到了VS 2008。迁移似乎是成功的,因为生成的程序可以构建和运行。
我在新的驱动器上重新安装了操作系统和所有应用程序,现在当我尝试在调试器中调试程序时,我会收到CRT的
我在新的驱动器上重新安装了操作系统和所有应用程序,现在当我尝试在调试器中调试程序时,我会收到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
无关。请参见下面的答案。