Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/83: Рейтинг темы: голосов - 83, средняя оценка - 4.88
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

Qt и boost

03.06.2012, 18:04. Показов 17018. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно прикрутить boost к Qt Creator?
Можно ли использовать уже установленный boost для Visual Studio (через инсталятор)?
Как правильно указать пути к boost?
Как обстоят дела с прикручиванием boost в Linux?

Пробывал следующие(см картинку)

Пытался добавить
C++ (Qt)
1
2
INCLUDEPATH += C:/Program Files/boost/boost_1_47/boost
LIBS += C:/Program Files/boost/boost_1_47/lib
Не дало результат.
Миниатюры
Qt и  boost  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2012, 18:04
Ответы с готовыми решениями:

Boost начало работы: Undefined reference to `boost::system::generic_category() '
Добрый день Собственно говоря возникла необходимость использовать boost в работе. Поставил так: sudo apt-get install boostlib-all-dev ...

Boost Log - undefined reference to `boost::system::system_category()'
Пытаюсь скомпилировать код из примеров Boost Log:#include <boost/log/trivial.hpp> int main(int, char*) { ...

Использование boost и boost.build с несколькими компиляторами
Здравствуйте! Собрал библиотеку boost и boost.build для двух компиляторов: MinGW 4.5.2 и Visual C++ 2010 Express Edition. Для этого...

26
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
05.06.2012, 22:39
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Какую бустовскую или qt-шную?
gcc-ную
1
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
05.06.2012, 22:57
boost
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2012, 10:20  [ТС]
http://qt-project.org/doc/qt-4... ncludepath

Добавлено через 31 минуту
Для винды придется наверное самому собирать boost.
C++ (Qt)
1
INCLUDEPATH += "C:/Program Files/boost/boost_1_47"  // Кавычки
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.07.2012, 03:14  [ТС]
Опция -lname - передаётся линковщику, указывает на необходимость подключить к исполняемому файлу библиотеку libname. Подключить значит указать, что такие-то и такие-то функции (внешние переменные) определены в такой-то библиотеке. В нашем примере библиотека статическая, все символьные имена будут ссылаться на код находящийся непосредственно в исполняемом файле. Обратите внимание в опции -l имя библиотеки задается как name без приставки lib.

Опция -L/путь/к/каталогу/с/библиотеками - передаётся линковщику, указывает путь к каталогу содержащему подключаемые библиотеки. В нашем случае задана точка ., линковщик сначала будет искать библиотеки в текущем каталоге, затем в каталогах определённых в системе.

Здесь необходимо сделать небольшое замечание. Дело в том, что для ряда опций gcc важен порядок их следования в командной строке. Так линковщик ищет код, соответствующий указанным в таблице символов файла именам в библиотеках, перечисленных в командной строке после имени этого файла. Содержимое библиотек перечисленных до имени файла линковщик игнорирует:

Code
1
2
3
4
5
6
7
8
9
10
11
$ gcc -Wall -c main.c
$ gcc -o main -L. -lhello main.o
main.o: In function `main':
main.c:(.text+0xa): undefined reference to `first'
main.c:(.text+0xf): undefined reference to `second'
collect2: ld returned 1 exit status
$ gcc -o main main.o -L. -lhello
$ ./main
First function...
Second function...
Main function...
Такая особенность поведения gcc обусловлена желанием разработчиков предоставить пользователю возможность по разному комбинировать файлы с библиотеками, использовать пересекающие имена... На мой взгляд, если возможно, лучше этим не заморачиваться. В общем подключаемые библиотеки необходимо перечислять после имени ссылающегося на них файла.

Существует альтернативный способ указания местоположения библиотек в системе. В зависимости от дистрибутива, переменная окружения LD_LIBRARY_PATH или LIBRARY_PATH может хранить список разделенных знаком двоеточия каталогов, в которых линковщик должен искать библиотеки. Как правило, по умолчанию эта переменная вообще не определена, но ни чего не мешает её создать:
$ echo $LD_LIBRARY_PATH

$ gcc -o main main.o -lhello
/usr/lib/gcc/i686-pc-linux-gnu/4.4.3/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lhello
collect2: выполнение ld завершилось с кодом возврата 1
$ export LIBRARY_PATH=.
$ gcc -o main main.o -lhello
$ ./main
First function...
Second function...
Main function...

Манипуляции с переменными окружения полезны при создании и отладке собственных библиотек, а так же если возникает необходимость подключить к приложению какую-нибудь нестандартную (устаревшую, обновленную, изменённую - в общем отличную от включенной в дистрибутив) разделяемую библиотеку.
http://pyviy.blogspot.com/2010/12/gcc.html

http://www.4stud.info/rtos/gcc1.html
0
 Аватар для korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 626
14.01.2014, 23:38
Чистый, здравствуйте. подскажите пожалуйста как подключить boost к qt на ubuntu
я установил все командой sudo apt-get install libboost-all-dev
дальше как писал в файле .pro так как здесь писали но ничего не получается.
путь к boost: /usr/include/boost
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
14.01.2014, 23:45
ну так и напишите в проекте
C++ (Qt)
1
#include <boost/...>
если нет то можетет в pro файле дополнительно указать где лежат заголовочные файлы:
C++ (Qt)
1
INCLUDEPATH += "/usr/include/boost "
так же не забудьте слинковать используемые библиотеки boost
0
 Аватар для korep
52 / 45 / 18
Регистрация: 06.01.2013
Сообщений: 626
15.01.2014, 00:16
Чистый,
.pro
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#-------------------------------------------------
#
# Project created by QtCreator 2014-01-11T17:55:39
#
#-------------------------------------------------
 
QT       += core
 
QT       -= gui
 
TARGET = server
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp
 
INCLUDEPATH += "/usr/include/boost"
 
LIBS += -lboost_asio -lboost_bind -lboost_shared_ptr -lboost_shared -lboost_thread
.cpp
C++ (Qt)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include <QCoreApplication>
#include <QDebug>
#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/shared_array.hpp>
#include <boost/thread.hpp>
 
// максимальная длина принимаемого сообщения.
static const size_t message_len = 32;
 
typedef boost::shared_ptr<boost::asio::ip::tcp::socket> socket_ptr;
 
// начало приема запросов на подключение.
void start_accept(
   boost::asio::ip::tcp::acceptor* acceptor
);
 
// создаем асинхронную операцию аксепта.
void on_accept(
   boost::asio::ip::tcp::acceptor* acceptor,
   socket_ptr socket
);
 
// вызовется при подключении.
void on_accept_handler(
   boost::asio::ip::tcp::acceptor* acceptor,
   socket_ptr socket,
   const boost::system::error_code& error // объект ошибки
);
 
// вызовется при завершении асинхронной записи.
void on_async_read(
   socket_ptr socket,
   boost::shared_array<char> message, // shared_array мы сюда передаем для
                                      // того, чтоб не дать ему удалить данные которыми он
                                      // владеет до завершения асинхронной записи.
   const boost::system::error_code& error // объект ошибки
);
 
/***************************************************************************/
 
int main() {
   static const char* ip = "127.0.0.1";
   static const boost::uint16_t port = 44550;
 
   // io_service - основа asio.
   boost::asio::io_service ios;
 
   // объект реализующий "вечную задачу".
   boost::shared_ptr<boost::asio::io_service::work> work(new boost::asio::io_service::work(ios));
 
   // определяем кол-во ядер.
   size_t cpu_count = boost::thread::hardware_concurrency();
 
   // создаем кол-во рабочих потоков равное кол-ву ядер.
   boost::thread_group work_threads;
   for ( size_t idx = 0; idx < cpu_count; ++idx ) {
      work_threads.create_thread(boost::bind(&boost::asio::io_service::run, &ios));
   }
 
   // объект представляющий адрес для TCP соединений.
   boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string(ip), port);
 
   // объект акксептора соединений.
   boost::asio::ip::tcp::acceptor acceptor(ios, endpoint);
 
   // запускаем асинхронный прием запросов на подключение
   start_accept(&acceptor);
 
   // сбрасываем "вечную задачу".
   work.reset();
 
   // работаем пока не завершаться все потоки.
   work_threads.join_all();
 
   // завершаемся.
   return 0;
}
 
/***************************************************************************/
 
// создаем асинхронную операцию аксепта
void start_accept(
   boost::asio::ip::tcp::acceptor* acceptor)
{
   // создаем объект сокета который будет связан с принятым подключением.
   socket_ptr socket(new socket_ptr::element_type(acceptor->get_io_service()));
 
   // создаем операци. асинхронного аксепта.
   acceptor->async_accept(
      *socket,
      boost::bind(
         &on_accept_handler,
         acceptor,
         socket,
         boost::asio::placeholders::error
      )
   );
}
 
// вызовется при приеме нового подключения.
void on_accept_handler(
   boost::asio::ip::tcp::acceptor* acceptor,
   socket_ptr socket,
   const boost::system::error_code& error)
{
   if ( !error ) {
      // создаем shared_array который должен жить вплоть до окончании асинхронного чтения.
      // для этого, message передаем как аргумент в функциональный объект, для того, чтоб инкрементировать счетчик ссылок.
      boost::shared_array<char> message(new char[message_len]);
 
      // для принятого соединения запускаем операцию асинхронного чтения.
      boost::asio::async_read(
         *socket,
         boost::asio::buffer(message.get(), message_len),
         boost::asio::transfer_at_least(2),
         boost::bind(
            &on_async_read,
            socket,
            message,
            boost::asio::placeholders::error
         )
      );
   } else {
      std::cout << "on_accept_handler() error: " << error.message() << std::endl;
   }
 
   // снова запускаем асинхронный прием запросов на подключение
   start_accept(acceptor);
}
 
/***************************************************************************/
 
// вызовется при завершении асинхронного чтения.
 
// примечание: аргумент message и socket, разрушаться при выходе из функции.
void on_async_read(
   socket_ptr socket,
   boost::shared_array<char> message,
   const boost::system::error_code& error)
{
   if ( !error ) {
      std::cout << "received message: " << message.get() << std::endl;
   } else {
      std::cout << "on_async_read() error: " << error.message() << std::endl;
   }
}
 
/***************************************************************************/
не работает пишет cannot find на каждую библиотеку

Добавлено через 9 минут
надо ли компилировать буст?

Добавлено через 12 минут
разобрался) нужно линковать только system и thread в данном случае.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2014, 00:16

Метапрограммирование в boost::proto (boost::spirit)
В библиотеке boost:: proto есть такой код calculator&lt;proto::terminal&lt;placeholder&lt;0&gt; &gt;::type&gt; const _1; ...

Qt и boost boost::system::generic_category()
Добрый день Не подскажите как настроить Qt на работу с boost? У меня в принципе все работает: умные указатели и тд. Но когда...

boost::geometry::model::box и boost::geometry::area
Здравствуйте! Пытаюсь измерить площадь box'a :D, но не знаю как правильно это сделать. Вот этот код при компиляции выдает кучу ошибок: ...

Acer: "Turbo Boost Driver" и "Turbo Boost Application"
Для ноута Acer Aspire скачивал драйвера и приложения. Есть среди них такие: Turbo Boost Driver: Turbo...

Qt vs Boost
Какие преимущества имеет одно перед другим? И, как думаете, какое кол-во программистов из тех, что пишет на C++ не использует ни то ни...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru