7

在仅安装了 Visual Studio .NET 2003 SP1 的开发机器 Vista SP1 上

- 使用 boost 1.44.0 我使用 bootstrap.bat 生成 b2.exe 和 bjam.exe 没有问题
- 使用 boost 1.57.0 我收到此错误消息时运行 bootstrap.bat :

    Building Boost.Build engine

Failed to build Boost.Build engine.
Please consult bootstrap.log for furter diagnostics.

这发生在 cmd.exe 或 Visual Studio .NET 2003 命令提示符下。

我在 boostrap.log 中有这些错误:

builtins.c(1885):错误 C2065:'FSCTL_GET_REPARSE_POINT':未声明的标识符 builtins.c
(1889):错误 C2065:'IO_REPARSE_TAG_SYMLINK':未声明的标识符

builtins.c 包含

#ifdef OS_NT
#include <windows.h>
#ifndef FSCTL_GET_REPARSE_POINT
/* MinGW's version of windows.h is missing this, so we need
 * to include winioctl.h directly
 */
#include <winioctl.h>
#endif
#endif

并且 FSCTL_GET_REPARSE_POINT 在 VS .NET 2003 提供的 winioctl.h 中

我猜由于某种原因缺少 OS_NT 定义?

注意:Boost 1.57.0 windows 文档 仍然引用 VS .NET 2003

4

1 回答 1

7

我有 WindowsXP SP3 和 MSVC 2005 并且有同样的问题。在玩了一会儿之后,我在 src/engine/jam.h 中添加了以下内容:

#ifdef NT

#define _WIN32_WINNT 0x0501
#define IO_REPARSE_TAG_SYMLINK                  (0xA000000CL)

我还使用 MSVC 命令提示符为 MSVC 设置了所有内容

于 2014-12-10T18:35:55.787 回答