ошибка компиляции - PullRequest
       10

ошибка компиляции

3 голосов
/ 18 октября 2011

Я пытаюсь скомпилировать Boost 1.47 для x86 Windows CE, используя Visual Studio 2008 и STLPort 5.2.1.Я могу успешно скомпилировать для 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

Эта строка кода, на которую ссылается ошибка в ctype.h STLPort:

#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 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

1 Ответ

4 голосов
/ 18 октября 2011

Макрос X86 определен (либо с помощью одного из ранее включенных заголовков, либо из командной строки) и установлен на 1, поэтому он расширяется, как это делают макросы. #undef X86 избавится от него.

...