1

#include <vector>有没有人尝试过像用 XE2 编译的 Mac 应用程序一样简单的东西?

C++ Builder 的 XE2 更新 1 中是否存在如此基本的问题,或者我的安装是否损坏?

简单地添加#include <vector>到一个新的火猴高清应用程序,我得到构建失败:

[BCC32 Error] cstdlib(43): E2015 Ambiguity between 'ldiv_t' and 'Posix::Stdlib::ldiv_t'
  Full parser context
    Unit1.cpp(7): #include C:\Program Files\Embarcadero\RAD Studio\9.0\include\boost_1_39\boost\tr1\tr1\vector
     vector(16): #include C:\Program Files\Embarcadero\RAD Studio\9.0\include\boost_1_39\boost/tr1/detail/config_all.hpp
    config_all.hpp(48): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\cstdlib
    cstdlib(32): namespace std

从代码:

//---------------------------------------------------------------------------

#include <fmx.h>
#pragma hdrstop

#include "Unit1.h"
#include <vector>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
4

2 回答 2

1

Embarcadero 的解决方案(仅适用于更新 2):

  • 打开 [RADStudioXE2]\include\dinkumware 目录下的 cstdlib
  • 取第 49 行:using _CSTD size_t; using _CSTD div_t; using _CSTD ldiv_t;
  • 将其移至其正上方的“#if defined”块上方(第 33 行)

现在可以将 STL 编译为 FMX C++ 应用程序

于 2011-11-02T22:38:15.717 回答
0

尝试从包含路径中删除 $(CG_BOOST_ROOT) 。

于 2011-11-02T01:27:22.903 回答