C ++ Builder STL для OS X дает сбой? - PullRequest
1 голос
/ 02 ноября 2011

Кто-нибудь пробовал что-то столь же простое, как #include <vector> в приложении для Mac, скомпилированном с XE2?

Что-то настолько не работает в обновлении 1 для XE2 для C ++ Builder или моя установка не работает?

Просто добавив #include <vector> в новое приложение Fire Monkey HD, я получаю сбои сборки:

[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)
{
}
//---------------------------------------------------------------------------

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Решение от Embarcadero (только для обновления 2):

  • Открыть cstdlib в каталоге [RADStudioXE2] \ include \ dinkumware
  • Взять строку 49: using _CSTD size_t; using _CSTD div_t; using _CSTD ldiv_t;
  • Переместите его над блоком "#iffined" прямо над ним (строка 33)

Теперь STL можно скомпилировать в приложение FMX C ++

0 голосов
/ 02 ноября 2011

попробуйте удалить $ (CG_BOOST_ROOT) из включенных путей.

...