2011-10-18 115 views
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 
+2

然後執行'#undef X86'。 –

+0

@Cat Plus Plus - 我是個白癡。是的,那是(顯然)它。如果你把答案放在答案中,我會接受它。 – PaulH

回答

4

您已X86宏定義(通過的一個較早包含的頭文件或命令行)並設置爲1,因此它會像宏一樣被擴展。 #undef X86將擺脫它。