Библиотека std C ++, связанная с различными стандартами C ++

Я компилирую проект с помощью Cygwin (GCC v4.5.0), и у меня возникла странная проблема с компоновщиком. Я надеюсь, что кто-то с некоторыми знаниями может помочь.

Ошибка: неопределенная ссылка на std :: basic_string , std :: allocator > :: basic_string (std: : -std = c ++ 0x Это будет успешным, если я не укажу стандарт.

Некоторые примечания:

  1. Я сообщаю gcc о необходимости вручную связать стандартную библиотеку с помощью флага компилятора: -lstdc ++
  2. Зависимость символа происходит от Заголовочный файл библиотеки Boost (v.1.45.0): boost :: units :: detail :: utility.hpp, function: std :: string demangle (const char * name);
  3. Приложение правильно компилируется и связывается с использованием MinGW gcc v4.5.0.

Вопросы :

  1. Скомпилированная стандартная библиотека обычно содержит разные символы для разных стандартов C ++?
  2. Меняется ли искажение имен символов с разными стандартами C ++ в GCC?
  3. Почему компоновщик не может найти символы для ] std :: basic_string , когда я могу гарантировать, что он найдет libstdc ++. a ?

Заранее всем спасибо.

-JT

6
задан J T 28 March 2013 в 20:50
поделиться