编译Boost时出现错误

3
我正在尝试使用Visual Studio 2008和STLPort 5.2.1在x86 Windows CE上编译Boost 1.47。我可以成功地为x86 Windows和ARMV4I Windows Mobile 6.5编译。当我运行bjam时,几乎每个模块都会出现这个错误:
stlport\ctype.h(42) : fatal error C1083: Cannot open include file: '../1/ctype.h': No such file or directory

STLPort的ctype.h中引起错误的代码行是:

#include _STLP_NATIVE_C_HEADER(ctype.h)

如果我创建了一个新的 Visual Studio 项目,并添加了以下代码行:
#define STR1(x) #x
#define STRINGIZE(x) STR1(x)
#pragma message (STRINGIZE(_STLP_NATIVE_C_HEADER(ctype.h)))

我看到:<../X86/ctype.h>,正如我所预期的一样。
为什么boost将“X86”替换为“1”?在编译ARMV4I Windows Mobile或x86 Windows时,它没有这个问题。
编辑:
更多信息。某些事情正在有意地对“X86”进行字符串替换。
在stlport \ stl \ config_evc.h中,我向此代码添加了pragma message
#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
#    if defined (_X86_)
#      if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR)
#        define _STLP_NATIVE_INCLUDE_PATH ../Emulator
#      else
#        define _STLP_NATIVE_INCLUDE_PATH ../X86
#        pragma message (STRINGIZE(../abcdefg))
#        pragma message (STRINGIZE(../X86))
#        pragma message (STRINGIZE(_STLP_NATIVE_INCLUDE_PATH))
#      endif

输出结果为:
../abcdefg
../1
../1

@Cat Plus Plus - 我是个白痴。是的,就是这样。如果你把这个放在答案里,我会接受它。 - PaulH
1个回答

4

如果您已经定义了X86宏(无论是由前面包含的头文件还是从命令行中定义),并将其设置为 1,那么它会被展开,就像宏通常会做的那样。#undef X86 将去除此宏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接