Nightmare1
@Nightmare1
Программист

Почему возникает проблема?

Linking Машинный Выполнение
obj/x64/Debug/Color.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)':
Color.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm]+0x24a): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_cold(char*, unsigned long, char const*, unsigned long, unsigned long)'
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
alxndrlsn
@alxndrlsn
Инженер
Поисковик по запросу, выделенному жирным шрифтом, много чего выдает, но понравился вот этот ответ:
Сообщение undefined reference to значит, что компилятор функцию знает, но линкер не догадывается, где она валяется. Для исправления надо включить в проект файлы с телами всех используемых версий всех функций. Если функции библиотечные, то это делается подключением lib файлов, или со статическими библиотеками, или с библиотеками импорта в зависимости от того, валяются ли функции в lib, или в dll. В том числе это относится к своим библиотекам. В остальных случаях добавить в проект файлы с исходниками тел функций. Где именно они будут валяться - дело 128-е, но пихать их в голову - плохая идея.(с) сайбер-форум


Дословно разбирая ошибку, читается примерно следующее:
Сообщает компилятор: obj/x64/Debug/Color.o: в функции std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) найдено нечто:
в файле Color.cpp: .text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm]+0x24a): не определилась ссылка на std::__cxx11::basic_string, std::allocator >::_M_replace_cold(char*, unsigned long, char const*, unsigned long, unsigned long)
Предположу, что речь идет о том, что вместо ожидаемого метода _M_replace(ulong, ulong, char const*, ulong) был вызван нигде неопределенный метод _M_replace(char*, ulong, ulong, char const*, ulong)..., то есть кто-то указал лишний аргумент и никак это не обосновал.
Поправьте, если не так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы