Visual C ++ 2015 express: _stat не работает в Windows XP

Запуск следующего пример для _stat из MSDN скомпилирован с Visual C ++ 2015 Express с использованием v140_xp как Platform Toolset (цель Win32) работает нормально на Windows 7, но не на Windows XP на нескольких машинах, которые я тестировал.

// crt_stat.c
// This program uses the _stat function to
// report information about the file named crt_stat.c.

#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>

int main()
{
struct _stat buf;
int result;
char timebuf[26];
char* filename = "crt_stat.c"; // Absolute paths like "D:\\crt_stat.c" produce the same behaviour.
errno_t err;

// Get data associated with "crt_stat.c":
result = _stat( filename, &buf );

// Check if statistics are valid:
if ( result != 0 )
{
perror( "Problem getting information" );
switch ( errno )
{
case ENOENT:
printf( "File %s not found.\n", filename );
break;
case EINVAL:
printf( "Invalid parameter to _stat.\n" );
break;
default:
/* Should never be reached. */
printf( "Unexpected error in _stat.\n" );
}
}
else
{
// Output some of the statistics:
printf( "File size     : %ld\n", buf.st_size );
printf( "Drive         : %c:\n", buf.st_dev + 'A' );
err = ctime_s( timebuf, 26, &buf.st_mtime );
if ( err )
{
printf( "Invalid arguments to ctime_s." );
return 1;
}
printf( "Time modified : %s", timebuf );
}
}

Выход Windows 7:

File size     : 6
Drive         : D:
Time modified : Tue Sep  8 10:06:57 2015

Вывод Windows XP:

Problem getting information: Invalid argument
Invalid parameter to _stat.

И да, crt_stat.c находится в каталоге исполняемых файлов, который также является CWD.

Это ошибка или я что-то упустил?

6

Решение

Как указано в комментариях, это ошибка во время выполнения. Прямо сейчас (2015-09-09) исправление еще не доступно в обновлении, но, вероятно, будет в ближайшее время. Обходной путь должен использовать GetFileAttributesEx вместо.

4

Другие решения

Ошибка устранена в распространяемом Visual C ++ для Visual Studio 2015, обновление 1

Я решил проблему, установив эту форму обновления здесь: https://www.microsoft.com/en-us/download/details.aspx?id=49984

0

По вопросам рекламы ammmcru@yandex.ru