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>
如我所料。
爲什麼用「1」替代「X86」的boost?在編譯ARMV4I Windows Mobile或x86 Windows時不存在此問題。
編輯
更多信息。有些東西是非常故意在「X86」上進行字符串替換。
在STLport的\ STL \ config_evc.h我添加pragma message
s到這個代碼:
# 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
然後執行'#undef X86'。 –
@Cat Plus Plus - 我是個白癡。是的,那是(顯然)它。如果你把答案放在答案中,我會接受它。 – PaulH