Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
NikBond
2 / 2 / 2
Регистрация: 21.07.2015
Сообщений: 36
#1

Ошибка "неопределенная ссылка" при работе с std::thread - C++

20.01.2016, 02:06. Просмотров 709. Ответов 2
Метки нет (Все метки)

При попытке сделать что-либо с std::thread, выдает ошибку компиляции, "неопределенная ссылка " .

К примеру:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <chrono>
#include <thread>
#include <mutex>
 
std::mutex g_lock;
 
void threadFunction()
{
     g_lock.lock();
 
     std::cout << "entered thread " << std::this_thread::get_id() << std::endl;
     std::this_thread::sleep_for(std::chrono::seconds(rand()%10));
     std::cout << "leaving thread " << std::this_thread::get_id() << std::endl;
 
     g_lock.unlock();
}
 
int main()
{
     srand((unsigned int)time(0));
     std::thread t1(threadFunction);
     std::thread t2(threadFunction);
     std::thread t3(threadFunction);
     t1.join();
     t2.join();
     t3.join();
     return 0;
}
Код
||=== Build: Debug in thread test (compiler: LLVM Clang Compiler) ===|

D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|732|undefined reference to «pthread_mutex_init»|
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|739|undefined reference to «pthread_mutex_destroy»|
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|748|undefined reference to «pthread_mutex_lock»|
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|686|undefined reference to 
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|778|undefined reference to «pthread_mutex_unlock»|
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\i686-w64-mingw32\bits\gthr-default.h|680|undefined reference to «pthread_equal»|
D:\ProgramFiles\MSYS\mingw32\include\c++\5.3.0\thread|292|undefined reference to «nanosleep»|
Компилятор LLVM Сlang, IDE - Code::Blocks.
По документации Clang поддерживает thread и вообще весь С++11 полностью, специально для этого и ставил его.

Что не так? Что делать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2016, 02:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка "неопределенная ссылка" при работе с std::thread (C++):

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd" - C++
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в конце заполнения рандомным способом...

Ошибка "Signal received" при использовании taglib - C++
Когда пытаюсь вывести id3v2-&gt;artist(или любое другое ), вне функции где инициализировал id3v2, вылетает signal received;(библиотека taglib)...

Ошибка: "Необработанное исключение: 0xC0000005: Нарушение прав доступа при записи" - C++
мной написана программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;mpi.h&quot; #include &lt;ctime&gt; #include &lt;time.h&gt; #include...

"std::domain_error" в bool-функции - C++
Есть одна функция, которая сохраняет данные json в файл. Когда доходит дело до return, то срабатывает исключение &quot;std::domain_error&quot;. ...

Ошибка: invalid conversion from "int" to "SDL_RendererFlip" - C++
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать

Pimpl + std::thread + linux sockets? - C++
Доброго времени суток. Есть задача постоянно слушать сокеты, ну и что-то с этим всем делать, класс назван Transport. Т.к. типы сокетов...

2
ForEveR
В астрале
Эксперт С++
7992 / 4751 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
20.01.2016, 10:21 #2
NikBond, -pthread надо добавить линковщику.
1
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
20.01.2016, 10:23 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от NikBond Посмотреть сообщение
Что не так? Что делать?
Добавить к линковке библиотеку pthread:
Bash
1
-lpthread
В CodeBlocks в настройках проекта, вкладка Linker Settings, нажать Add и вписать "pthread" (без кавычек).
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2016, 10:23
Привет! Вот еще темы с ответами:

Чтение переменной несколькими std::thread - C++
Собственно, вопрос в заголовке темы. Можно ли прочитать одну переменную несколькими потоками одновременно? Именно прочесть, а не...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой (&quot;xyz&quot;).

Ошибка "is block type valid" в момент вывода картинки OpenCV - C++
Здравствуйте. Имеется код. Он есть в файлах opencv source, немного изменён. Не сразу заработал, но всё равно осталась ошибка. В момент...

C++ QT. PlaySound и ошибка "Undefined reference" - C++
Всем привет. Следующая проблема, Qt ругается на эту конструкцию при компиляции. void QtBitcoinTrader::playWav(QString wav, bool noBlink) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru