長い間機能している C++ コード ベースがあります。コード ベースは、私が最近 VS 2008 に移行した従来の VS 2003 プロジェクト セットでした。結果のプログラムがビルドされ、実行されるという点で、移行は成功したように見えました。
OS とすべてのアプリケーションを新しいドライブに再インストールしましたが、デバッガー内でプログラムをデバッグしようとすると、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 8.0 が必要なため、新しいシステム (VS 2008 のみ) に古いバージョンの VS がインストールされていないことが原因で問題が発生する可能性があると考えました。 VS 2008を使用しても問題ありません。したがって、VS 2005をインストールしました(2003ではありません)。ただし、問題は引き続き発生します。
どんな提案でも大歓迎です。
*更新 - この問題は とは無関係chsize
です。以下の私の答えを見てください。