c++ - 在 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 的一些问题。
解决方案
事实证明,该错误与此处有关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);
推荐阅读
- bash - 将 MacOS 上的 /bin/bash 升级到 v5+
- php - 在 WooCommerce 订单电子邮件中插入不包括产品成本的自定义总计
- google-cloud-dataflow - 是否可以使用 DataFlow 进行数据系统集成?
- javascript - 我用 javaScript 做了一个石头剪刀布游戏,但它不起作用问题出在 botDiv.innerhtml 的最后一个函数中
- swift - 使用切换按钮 Swift 反转 UIViewPropertyAnimator
- python - BeautifulSoup - 如何调用嵌套元素
- python - 如何检查鼠标是否在 Python Tkinter 中的小部件上?
- angular - 订阅完成后如何调用函数
- python - 如何在 flask_restful 中返回 405?
- sql - Oracle SQL:手动编写文本