Windows版本预处理器和构build向后兼容?

我有两台机器,一台运行Vista Ultimate 32,另一台运行XP SP3。 两台机器都安装了相同的VS2008版本
我在第一台机器(vista)上build立了boost 1.50.0,然后依靠boost来升级libtorrent库。
我在一些libtorrent的构build指令中看到,win版本是在预处理器中指定的,所以我现在做了一些有意义的事情:

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

构build成功,我能够在该机器上运行应用程序。 但是,当我尝试在另一个(XP)上运行它时,它失败了,如下所示:

程序入口点SetFileInformationByHandle不能位于dynamic链接库KERNEL32.dll中

现在,逻辑上,我猜这是与不兼容的版本有关,当这个variables存在不同的值时,可能包含不同的窗口标题。

要求:我想build立在Vista或7上,仍然可以在XP上运行它。
问题:我是否需要这个指令,如果我这样做,应该有什么价值? 我还应该指定什么,如果我失去了一些东西?

    尝试在XP上构建你的程序,或者将_WIN32_WINNT设置为0x0501 (如你的评论)。 根据这个报告 , kernel32.dll库是后向二进制兼容的,所以你可以用这个库的旧版本(5.0)来构建你的程序,并且运行一个新的(6.0)而不需要重新编译。 反之亦然是不可能的,因为一堆添加符号( SetFileInformationByHandle是其中之一)。