在Visual Studio中使用XP工具集进行编译时,Windows XP运行时出现路径空间问题

时间:2018-12-11 19:41:12

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

我正在将Visual Studio 15 2017与v141_xp工具集配合使用,以编译Windows XP的Win32应用程序。该应用程序可以在Windows 10和XP上正常运行,但是运行某些Windows API命令,例如_chdir_mkdir(或CreateDirectory)似乎无法正常工作:该目录不正确已创建,或者对于_chdir,应用程序不会更改其工作目录。

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

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

谢谢。

更多信息

由于可移植性要求,我正在使用/ MTd'多线程调试'进行编译。似乎在编译CRT时可能会遇到一些问题。

1 个答案:

答案 0 :(得分:0)

事实证明,该错误与stat有关,并在此处进行了更多描述:

Visual C++ 2015 express: _stat not working on Windows XP

我的应用程序正在对文件或目录使用此存在性测试,多年来,这是一种方便的跨平台解决方案:

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

但是,如果您使用较新的工具集为Windows XP进行编译,则stat现在已损坏,您必须使用Windows API,如:

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