Я использую opendds и tao / ace для генерации кода из файла idl.
Мой файл idl:
struct SSave
{
string strr;
};
Я генерирую код так:
opendds_idl Class.idl
tao_idl -Gstl -I/usr/include/ Class.idl
tao_idl -Gstl -I/usr/include/ ClassTypeSupport.idl
#-Gstl Generate the alternate C++ mapping for IDL strings and sequences
И вот что я получил в файле ClassC.h например:
#include <vector>
#include <string> //inclusion of string
{...}
struct SSave
{
// TAO_IDL - Generated from
// /build/opendds-3.13/ACE_TAO/TAO/TAO_IDL/be/be_type.cpp:304
typedef SSave_var _var_type;
typedef SSave_out _out_type;
static void _tao_any_destructor (void *);
::TAO::String_Manager strr; //NOT std::string
};
{...}
Так есть ли способ сказать TAO для сопоставления std :: string вместо :: TAO :: String_Manager?
Примечание: я использую версию 2.5.1 из tao_idl.
Заранее спасибо.
OpenDDS следует отображению языка IDL в C ++, где строка IDL отображается в свой собственный конкретный тип (как генерирует tao_idl). Как часть AXCIOMA мы реализовали IDL для C ++ 11 языковая карта для DDS, которая будет поддерживать OpenDDS в следующем основном выпуске.
Кстати, вы уже спрашивали этот в списке рассылки OpenDDS и получил ответ там.
Других решений пока нет …