Я компилирую проект с помощью Cygwin (GCC v4.5.0), и у меня возникла странная проблема с компоновщиком. Я надеюсь, что кто-то с некоторыми знаниями может помочь.
Ошибка: неопределенная ссылка на
std :: basic_string
, std :: allocator > :: basic_string (std: : -std = c ++ 0x
Это будет успешным, если я не укажу стандарт.Некоторые примечания:
- Я сообщаю gcc о необходимости вручную связать стандартную библиотеку с помощью флага компилятора:
-lstdc ++
- Зависимость символа происходит от Заголовочный файл библиотеки Boost (v.1.45.0):
boost :: units :: detail :: utility.hpp, function: std :: string demangle (const char * name);
- Приложение правильно компилируется и связывается с использованием MinGW gcc v4.5.0.
Вопросы :
- Скомпилированная стандартная библиотека обычно содержит разные символы для разных стандартов C ++?
- Меняется ли искажение имен символов с разными стандартами C ++ в GCC?
- Почему компоновщик не может найти символы для
] std :: basic_string
, когда я могу гарантировать, что он найдетlibstdc ++. a
?Заранее всем спасибо.
-JT