Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 2
Регистрация: 21.07.2015
Сообщений: 36
1

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

20.01.2016, 02:06. Показов 1898. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2016, 02:06
Ответы с готовыми решениями:

Ошибка при работе с ини файлами когда разделителем является не "=", а ":"
Всем привет. Такая проблема имеются файлы &quot;.ini&quot; в них разделителем является не знак &quot;=&quot;, а...

Ошибка при работе с com портом: "Не возможно открыть последовательный порт"
Помогите пожалуйста, не могу понять в чем причина. Написал программу открытия com порта, а она...

Появляется ошибка "Unable to open file 'C0W32.OBJ'" при работе с двумя формами
При работе с двумя формами выдает следующее: Fatal: Unable to open file 'C0W32.OBJ' что делать?

Запуск DLL. При работе с потоками появляется ошибка "Access violation"
Здравствуйте, у меня вопрос. Я запускаю dll через консоль с помощью RUNDLL32.EXE В библиотеке...

2
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.01.2016, 10:21 2
NikBond, -pthread надо добавить линковщику.
1
15108 / 8108 / 1958
Регистрация: 30.01.2014
Сообщений: 13,774
20.01.2016, 10:23 3
Цитата Сообщение от NikBond Посмотреть сообщение
Что не так? Что делать?
Добавить к линковке библиотеку pthread:
Bash
1
-lpthread
В CodeBlocks в настройках проекта, вкладка Linker Settings, нажать Add и вписать "pthread" (без кавычек).
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2016, 10:23

Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list"
Не могу сообразить почему возникает ошибка. У меня в классе есть метод, который должен работать в...

Ошибка "не найден оператор, принимающий правый операнд типа "const std::string" "
Привет. Подчеркивает Name. Как можно обратиться к public string из класса наследника? 1) Класс...

Ошибка при компиляции "Cannot convert `std::string' to `const char*"
Подскажите пожалуйста.Компилятор указывает на 13-ой позиции на ошибку типа: cannot convert...

Ошибка: отсутствует оператор ">>"; типы операндов: std::istream >> std::string
Привет всем! Кто-нибудь объясните пожалуйста, что не так, что от меня компилятор требует?


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

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

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