微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.exe 能否使用 v141_xp 构建,但将库构建与“v141 工具集”支持“windows XP”连接起来?

如何解决.exe 能否使用 v141_xp 构建,但将库构建与“v141 工具集”支持“windows XP”连接起来?

我们的团队正在努力让我们的项目支持 XP。
我们正在使用 visual studio 2017 来构建结果可执行文件
但是,VCPKG 现在不支持 XP。因此,我们尝试手动构建相关包(例如 yaraspdlogopenssl...)。

在“试错”的过程中,我们发现了一件很奇怪的事情。当我们使用 “v141_xp 工具集” 构建项目,并使用 “v141 工具集”(该 SDK 不支持 XP)链接构建的库时。
生成的可执行二进制文件在 Windows XP 中运行良好。

  • 示例:
    1. 我们使用"v141 toolset"构建spdlog静态库,使用"/MT"编译,生成spdlog.lib >.
    2. 然后我们使用“v141_xp 工具集”编译下面的代码链接spdlog.lib (v141)。它生成"example.exe"

#include <iostream>
#include <spdlog/spdlog.h>

int main()
{
    spdlog::info("spd go");
    std::cout << "Hello World!\n";
}

然后在 windows XP 中运行 "example.exe",它可以正常工作,不会弹出任何错误窗口。

这是一个简单的例子,可以帮助我更轻松地解释情况。事实上,我们已经尝试了所有与包相关的示例代码,使用相同的方法
看来我们不需要再次使用“v141_xp”重新构建包。

这是我的问题:

  • 真的安全吗?它会导致一些潜在的问题吗?

    我们使用 v141_xp(SDK 7.1A) 编译我们的应用程序,使用 v141(SDK 8.1) 链接库构建。

  • "v141""v141_xp" 有什么区别?从我们的实验来看,两者都可以在XP上运行。看起来几乎没有区别。

    (我们使用 v141 构建在 XP 中运行的 .exe 构建,链接时带有额外的标志 /subsystem:console,5.01。)

这种奇怪的行为让我很困惑。非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。