G ++ новые проблемы ABI
У меня проблема с новым ABI, представленным для C ++ 11 в GCC. После обновления до GCC 5.3 мой проект больше не компилируется. Сообщения об ошибках, которые я получаю, просты:
undefined reference to `tokenize(std::__cxx11::basic_string' ...more characters
или же
undefined reference to `extract(std::string const&)'
Итак, похоже, что я что-то напутал, и GCC не может решить, хочу ли я старый ABI или новый (__cxx11::
часть отсутствует в некоторых сообщениях об ошибках, а присутствует в других)?
Я попытался несколько решений, чтобы решить эту проблему:
прохождение-D_GLIBCXX_USE_CXX11_ABI=0
в GCC,прохождение-D_GLIBCXX_USE_CXX11_ABI=1
в GCC,установка макроса непосредственно в исходном коде,установкаabi_tag
атрибут в декларациях GCC жаловался, когда прошел-Wabi-tag
флаг,К сожалению, ни один из них не сработал (т.е. позволил скомпилировать код). Я знаю только одно: возвращаются только функцииstd::string
или принимая его как параметр, не удалось связать. Что и следовало ожидать, учитывая то, что я прочитал о проблеме в Интернете. Мне не удалось воспроизвести проблему в простой, примерной программе, чтобы представить ее здесь.
Есть ли какое-то очевидное решение моей проблемы, которого мне не хватает?