C ++ Builder:#include 错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ Builder:#include 错误相关的知识,希望对你有一定的参考价值。

我正在测试新版本的C Builder(版本XE2)。大多数常见的包含被重定向到boost库或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 filesembarcadero
ad studio9.0includedinkumwareiostream
iostream(5): #include c:program filesembarcadero
ad studio9.0includedinkumwareistream
istream(5): #include c:program filesembarcadero
ad studio9.0includedinkumwareostream
ostream(5): #include c:program filesembarcadero
ad studio9.0includedinkumwareios
ios(5): #include c:program filesembarcadero
ad studio9.0includedinkumwarexlocnum
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)运行良好......

谢谢你的帮助。

答案

你的#ifndef在头文件的末尾是否有匹配的#endif?

什么是最小的使用完整示例代码产生此错误?

另一答案

我知道这是一篇旧帖子,但有人可能会像我一样在互联网搜索中找到它。检查项目设置;我有一个项目开始产生类似的错误,并发现我已经在编译器设置选项卡中将代码合规性设置从Borland / Codegear更改为ANSI。改回来消除了错误。

以上是关于C ++ Builder:#include 错误的主要内容,如果未能解决你的问题,请参考以下文章

C++Builder (RAD Studio) 中的范围检查错误

C++Builder 出现 Corrupt Portfolio stream错误修正方法

C++Builder 出现 Corrupt Portfolio stream错误修正方法

在c++builder中使用indy编程,想要在邮件体内嵌入一个jpg图片,不用超链接的方法怎么实现。

com.android.builder.errors.EvalIssueException: android-apt plugin is incompatible with the Android(代

Electron-builder“The process cannot access the file because it is being used by another process.”((代