Я создаю приложение, которое использует стороннюю библиотеку (Box2D-MT), которую я создаю из источников. При компоновке, я получаю эту неопределенную ссылочную ошибку:Получение undefined ссылки на std :: thread :: _ M_start_thread
b2Threading.cpp:(.text._ZNSt6threadC2IM12b2ThreadPoolFviEJPS1_iEEEOT_DpOT0_[_ZNSt6threadC5IM12b2ThreadPoolFviEJPS1_iEEEOT_DpOT0_]+0xa4):
undefined reference to 'std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)())'
Я строй с г ++ и связью с
-lBox2D -lpthread -lrt -ldl -lstdc++
также, я компиляция с
-std=c++11
смотрит в libstdC++ а. Я вижу аналогичный этот символ (это «Т»):
nm -C /usr/lib/gcc/x86_64-linux-gnu/4.9.2/libstdc++.a | grep _M_start_thread
0000000000000000 T std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>)
, но эта перегрузка не принимает второй параметр.
Я искал весь интернет для чего-то подобного, но никто, кажется, не имел этой проблемы раньше (в любом контексте).
Любой намек на то, почему я получаю эту ошибку и как я могу ее решить?
Использовать флаг компилятора '-pthread' вместо' -lpthread'. Используйте его для компиляции и компоновки. –
@ πάνταῥεῖ попробовал это прямо сейчас, я получаю точно такую же ошибку –
Какова ваша ** полная ** ссылка команда? –