2013-12-08 2 views
3

После включения как Protobuf 2,5 и Irrlicht 3D-движка я получил следующее сообщение об ошибке компиляции:неоднозначных символы строки с Protobuf

...\irrlicht\trunk\source\protobuf-2.5.0rc1\src\google\protobuf\generated_message_util.h(71): 
error C2872: 'string' : ambiguous symbol 
could be 'c:\msdev2010\vc\include\xstring(2062) : std::basic_string<_Elem,_Traits,_Ax> 
std::string' 
with 
[ 
    _Elem=char, 
    _Traits=std::char_traits<char>, 
    _Ax=std::allocator<char> 
] 
or 
c:\projects\ultimatestrategy\irrlicht\include\irrstring.h(74) : irr::core::string 

Теперь я понимаю, что Protobuf вызывают проблемы, так как они не используют полные имена символов, а используйте директиву с использованием.

Вопрос: Каков самый быстрый способ обойти фиксацию обеих или обеих библиотек, чтобы они хорошо играли вместе?

Примечание: Только ссылки я нашел на эту проблему: https://code.google.com/p/protobuf/issues/detail?id=544&q=ambiguous%20symbol&colspec=ID%20Type%20Status%20Priority%20FixedIn%20Owner%20Summary

Любая помощь будет принята с благодарностью.

+0

Можете ли вы попробовать поставить 'пакет irr;' как первая строка в прото-файле и регенерировать? – James

+0

К сожалению, нет. пакет можно использовать только один раз в файле определения .proto. –

ответ

2

я в конечном итоге заменить все строку по станд :: строку в коде Google. Я также заменил все map с std :: map.

К сожалению, это нужно делать каждый раз, когда библиотеки protobuf обновляются и очень непрактичны.

Смежные вопросы