我正在尝试使用Visual Studio 2008和STLPort 5.2.1在x86 Windows CE上编译Boost 1.47。我可以成功地为x86 Windows和ARMV4I Windows Mobile 6.5编译。当我运行bjam时,几乎每个模块都会出现这个错误:
如果我创建了一个新的 Visual Studio 项目,并添加了以下代码行:
我看到:
为什么boost将“X86”替换为“1”?在编译ARMV4I Windows Mobile或x86 Windows时,它没有这个问题。
编辑:
更多信息。某些事情正在有意地对“X86”进行字符串替换。
在stlport \ stl \ config_evc.h中,我向此代码添加了
输出结果为:
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