我測試的CBuilder(版本XE2)的新版本。大多數commnon包括被重定向到Boost庫或Dinkumware的庫(STL一些實施?)。C++ Builder中的:#include <iostream>錯誤
#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'
哪裏可能是問題?我從「包含路徑」中刪除了所有項目,爲什麼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),效果很好......
感謝您的幫助。
已經有這樣的問題,或解決了嗎? – kokbira 2012-09-11 19:46:22
你試過從頭開始重建所有東西嗎?更新後的未定義符號可能表示預編譯頭文件或未重建的二進制文件。 – bipll 2017-12-22 08:46:01