![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]() ![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Начал разбираться с boost, а конкретно с boost thread.
Во многих примерах используется mutex (#include <boost/thread/mutex.hpp>) Но во время компиляции влазит вечно ошибка error: ‘mutex’ was not declared in this scope То есть если я набираю boost:: то в вариантах подстановки есть к примеру thread, а mutex нет. Почему? Из-за этого немогу инициализировать переменную. |
|
|
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
RazrFalcon, ты пространство имён не забыл указать. В доках есть примеры использования.
В коде будет примерно так
|
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Пример из инета, суть не меняет в принципе, брал здесь.
Хотя от примера не зависит в прочем. срр
Makefile на всякий случай
Через консоль тоже безрезультатно. Ubuntu 10.10 + boost 1.42 из репов. |
|
|
Iron Bug |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
boost 1.42 из репов зачем 1.42 bp из репов, если уже 1.44 официальный есть? но сути это не меняет. выше было чётко указано, что надо указать ему заголовки в инклюдах. у тебя там с путями странность: #include <boost/thread/mutex.hpp> INCLUDEPATH = -I/usr/include/boost у тебя файлы ищутся в каталоге /usr/include/boost/boost/xxxx. ты уверен, что надо указывать /usr/include/boost, а не /usr/include? однако, в этом случае компилер обязательно сообщит, что не нашёл файл. не может быть, что не скажет. так что внимательнее читай сообщения компилера. Сообщение отредактировал Iron Bug - 25.10.2010, 6:58 |
|
|
RazrFalcon |
![]()
Сообщение
#5
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
INCLUDEPATH вообще не влияет на компиляцию.
вывод Running build steps for project untitled... Starting: "/usr/bin/qmake-qt4" /media/data/Additional/makefiles/untitled.pro -r -spec linux-g++ --version QMake version 2.01a Using Qt version 4.7.0 in /usr/lib The process "/usr/bin/qmake-qt4" exited normally. Starting: "/media/data/Additional/makefiles/build-wrapper.bash" Release ======== Build Started ========= g++ -c -Wall hello.cpp -o hello.o hello.cpp: In member function ‘void threaded_class::do_work()’: hello.cpp:32: error: ‘mutex’ was not declared in this scope hello.cpp: In constructor ‘threaded_class::threaded_class()’: hello.cpp:15: warning: ‘threaded_class::nbFibSteps’ will be initialized after hello.cpp:14: warning: ‘boost::thread threaded_class::m_thread’ hello.cpp:38: warning: when initialized here make: *** [hello.o] Error 1 ======== Build Finished ======== The process "/media/data/Additional/makefiles/build-wrapper.bash" exited normally. Error while building project untitled (target: Desktop) When executing build step 'Make' Если просто пустой проект создать, прописать хедеры, и в где либо написать boost::mutex m_mutex; к примеру, то скомпилится пустой проэкт, при том что без ошибок и варнингов, только подчеркнут будет boost::mutex m_mutex;, при наведении на который будет писаться: "boost::mutex is not a type name" ![]() PS: да, я знаю про 1.44 и ставил уже, но толку 0, поэтому откатился на эти пока. |
|
|
BRE |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
А что это за переменная mutex? В классе threaded_class таких нет, зато есть m_mutex.
![]()
|
|
|
RazrFalcon |
![]()
Сообщение
#7
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Точно, пример с инета брал, видать кривой попался.
Скомпилило, правда boost::mutex m_mutex; так и подсвечивается ![]() Всем спасибо, буду дальше разбираться. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.5.2025, 2:50 |