2011-10-18 11 views
3

Je suis en train de compiler Boost 1.47 pour x86 Windows CE en utilisant Visual Studio 2008 et STLPort 5.2.1. Je peux compiler avec succès pour x86 Windows et ARMV4I Windows Mobile 6.5.erreur de compilation de compilation

Quand je lance bjam, je reçois cette erreur dans les plus tous les modules:

stlport\ctype.h(42) : fatal error C1083: Cannot open include file: '../1/ctype.h': No such file or directory 

Cette ligne de code l'erreur fait référence dans le ctype.h de STLPort est:

#include _STLP_NATIVE_C_HEADER(ctype.h) 

Si je crée un nouveau projet Visual studio et ajoutez les lignes:

#define STR1(x) #x 
#define STRINGIZE(x) STR1(x) 
#pragma message (STRINGIZE(_STLP_NATIVE_C_HEADER(ctype.h))) 

Je vois: <../X86/ctype.h> que je me attends.

Pourquoi le boost remplace-t-il "X86" par "1"? Il n'a pas ce problème lors de la compilation pour ARMV4I Windows Mobile ou x86 Windows.

Modifier

Plus d'informations. Quelque chose fait très délibérément une chaîne remplacer sur "X86".

Dans stlport \ stl \ config_evc.h J'ai ajouté les pragma message s à ce code:

# 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 

La sortie est:

../abcdefg 
../1 
../1 
+2

Faites ensuite '#undef X86'. –

+0

@Cat Plus Plus - Je suis un idiot. Oui, c'était (évidemment) ça. Si vous mettez cela dans une réponse, je l'accepterai. – PaulH

Répondre

4

Vous avez X86 macro définie (soit par l'un des Les en-têtes inclus plus tôt, ou à partir d'une ligne de commande) et définir à 1, de sorte qu'il se développe, comme les macros ont tendance à faire. #undef X86 va s'en débarrasser.