C++ Builder: ошибка #include <iostream>

Я тестирую новую версию CBuilder (версия XE2). Большинство включений commnon перенаправляются для повышения библиотеки или библиотеки dinkumware (некоторые реализации STL?).

#ifndef Error_H
#define Error_H

#include <exception>
#include <iostream> //Error message, see bellow, please

но компиляция останавливается со следующими (и странными) сообщениями:

[BCC32 Error] xlocale(1392): E2451 Undefined symbol 'MB_LEN_MAX'[BCC32 Error] xlocale(1763):    
[BCC32 Error] xlocnum(1495): E2451 Undefined symbol 'CHAR_MAX'
Full parser context
xlocnum(1487): decision to instantiate: ostreambuf_iterator<char,char_traits<char> > numput::_Iput(ostreambuf_iterator<char,char_traits<char> >,ios_base &,char,char *,unsigned int) const
--- Resetting parser context for instantiation...
detectproj.cpp(22): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\iostream
iostream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\istream
istream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\ostream
ostream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\ios
ios(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\xlocnum
xlocnum(30): namespace std
xlocnum(1036): class num_put<_Elem,_OutIt>
xlocnum(1487): parsing: ostreambuf_iterator<char,char_traits<char> > numput::_Iput(ostreambuf_iterator<char,char_traits<char> >,ios_base 

Интересен тот факт, что компиляция была остановлена ​​до того, как был скомпилирован мой собственный исходный код... Компилятор просматривает включенные файлы в следующем порядке:

iostream -> istream -> ostream -> ios-> xlocnnum 
iostream -> istream -> ostream -> ios-> xlocnnum -> streambuf -> xiosbase ->xlocale

и прерывает обработку файлов xlocnum и xlocale со следующими ошибками:

E2451 Undefined symbol 'CHAR_MAX'
E2451 Undefined symbol 'MB_LEN_MAX'

Где может быть проблема? Я удалил все элементы из "include paths", почему в IDE все еще включены библиотеки dinkumware вместо общих библиотек?

Настройки:

Link with dynamic RTL: Off
CodeGuard: On
Directories and Conditionals/All configurations/Include Path: Empty
Directories and Conditionals/All configurations/Library Path: Empty
No pragma hdrstop, #pragma argsused are used in my code.

Старая версия (C++ Builder 2010) работает хорошо...

Спасибо за вашу помощь.

2 ответа

Я знаю, что это СТАРЫЙ пост, но кто-то может найти его в Интернете, как и я. Проверьте настройки вашего проекта; У меня был проект, который начал генерировать подобные ошибки, и обнаружил, что я изменил настройку соответствия кода с Borland/Codegear на ANSI на вкладке настроек компилятора. Изменение его обратно устранило ошибки.

Ваш #ifndef имеет соответствующий #endif в конце заголовочного файла?

Какой самый маленький пример использования полного кода, который вызывает эту ошибку?

Другие вопросы по тегам