gpt4 book ai didi

Windows 版本预处理器和为向后兼容而构建?

转载 作者:可可西里 更新时间:2023-11-01 09:35:03 24 4
gpt4 key购买 nike

我有两台机器,一台运行 Vista Ultimate 32,另一台运行 XP SP3。两台机器都安装了相同的 VS2008 版本。
我在第一台机器 (vista) 上构建了 boost 1.50.0,随后构建了依赖于 boost 的 libtorrent 库。
我在一些 libtorrent 构建说明中看到 win 版本是在预处理器中指定的,所以我做了目前看来有意义的事情:

#define _WIN32_WINNT=0x0600  // being that the current OS is Vista

构建成功,我能够在那台机器上运行应用程序。但是,当我尝试在另一个 (XP) 上运行它时,它失败了,并显示如下消息:

Procedure entry point SetFileInformationByHandle could not be located in the dynamic link library KERNEL32.dll

现在,从逻辑上讲,我猜测这与不兼容的版本有关,并且当此变量存在不同的值时,可能会包含不同的 Windows header 。

要求:我想在 Vista 或 7 上构建它,并且仍然能够在 XP 上运行它。
问题:我是否需要这个指令,如果需要,值应该是多少?如果我遗漏了什么,我还应该指定什么?

最佳答案

尝试在 XP 上构建您的程序或将 _WIN32_WINNT 设置为 0x0501(如您的评论所示)。 kernel32.dll 库根据 this report 向后二进制兼容,因此您可以使用该库的旧版本 (5.0) 构建您的程序,并使用新版本 (6.0) 运行它,而无需重新编译。由于添加了一堆符号(SetFileInformationByHandle 就是其中之一),反之亦然。

关于Windows 版本预处理器和为向后兼容而构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com