首页 > 解决方案 > 在 Visual Studio 中使用 XP 工具集编译时出现路径空间的 Windows XP 运行时问题

问题描述

我正在使用带有 v141_xp 工具集的 Visual Studio 15 2017 来编译适用于 Windows XP 的 Win32 应用程序。该应用程序在 Windows 10 和 XP 上都可以正常运行,但运行一些 Windows API 命令(如_chdir_mkdir(或CreateDirectory))似乎无法正常工作:未创建目录,或者在_chdir应用程序的情况下不会更改其工作目录。

我认为问题在于名称中带有空格的路径,但我不完全确定是这种情况。我在需要的地方正确使用\\"\""在字符串中,但是当像这样操作路径时,它似乎在 XP 中工作,但不是 10,或者它在 10 中工作,但不是 XP。

我希望代码在两者上都能正常工作。我还缺少其他兼容性问题吗?

谢谢。

更多信息

由于可移植性要求,我正在使用 /MTd 'Mult-threaded Debug' 进行编译。看起来这可能是编译 CRT 的一些问题。

标签: c++visual-studiowindows-10windows-xp

解决方案


事实证明,该错误与此处有关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);

推荐阅读