Проблемы во время выполнения Windows XP с пробелами при компиляции с набором инструментов XP в Visual Studio - PullRequest
0 голосов
/ 11 декабря 2018

Я использую Visual Studio 15 2017 с набором инструментов v141_xp для компиляции приложения Win32 для Windows XP.Приложение будет нормально работать как в Windows 10, так и в XP, но выполнение некоторых команд Windows API, таких как _chdir и _mkdir (или CreateDirectory), похоже, не работает правильно: каталог не создан или, в случаеиз _chdir приложение не меняет свой рабочий каталог.

Я думал, что проблема заключалась в путях с пробелами в имени, но я не совсем уверен, что это так.Я правильно использую \\ и "\"" в строках, где это необходимо, но при манипулировании путями, подобными этим, кажется, что либо работает в XP, но не в 10, либо в 10, но не в XP.

Я хочу, чтобы код работал правильно на обоих.Есть ли другие проблемы с совместимостью, которые мне не хватает?

Спасибо.

Подробнее

Я компилирую с / MTd 'Многопоточная отладкаиз-за требований переносимости.Похоже, это может быть некоторой проблемой при компиляции CRT.

1 Ответ

0 голосов
/ 14 декабря 2018

Оказывается, что ошибка была с stat и описана здесь немного больше здесь:

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

Мое приложение использовало этот тест существования для файла или каталога, который был удобным кроссплатформенным решением в течение многих лет:

return (stat(path.c_str(), &st) == 0);

Но если вы компилируете для Windows XP, используя более новый набор инструментов, stat теперь не работает, и вы должны использовать Windows API, например:

return (GetFileAttributes(path.c_str()) != INVALID_FILE_ATTRIBUTES);
...