Установка библиотеки Qt
Для работы с библиотекой Qt в Visual Studio необходимо cкачать на официальном сайте Qt. Компилировать проекты, использующие библиотеку Qt можно либо при помощи Visual Studio, либо при помощи Qt Creator.
Для работы с Qt Creator
- Библиотеку Qt можно скачать на официальном сайте, в разделе Офлайн-инсталляторы Qt. Выбирайте офлайн-инсталлятор Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 852 MB).
- При установке библиотеки Qt нажмите «Skip» для пропуска авторизации Qt Account. При выборе компонентов оставьте выбранным только MinGW 4.9.2 32bit.
- После завершения установки у вас должны появиться программы: Qt Assistant, Qt Designer, Qt Linguist и Qt Creator.
Работа с Qt Creator
Кодировка русского текста
Для того чтобы избежать проблем с кодировкой, рекомендуется сразу установить кодировку UTF-8 для редактора файлов с кодом у Qt Creator. Для этого необходимо выбрать UTF-8 в списке кодировок:
- в англоязычной версии Tools->Options->Text Editor->Behavior->File Encoding->Default Encoding
- в русскоязычной версии Инструменты->Параметры->Текстовый редактор->Поведение->Кодировки->По умолчанию
После этого все файлы cpp и h, которые были ранее созданы в Visual Studio, рекомендуется сконвертировать из Win в UTF-8 перед тем как открывать в Qt Creator.
Qt/C++ — Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC
Первоначальное знакомство с Boost под Windows начну со сборки предкомпилированных библиотек и подключения их к проекту на Qt. При этом воспользуюсь кодом одного из Hello World-ов из документации Boost, а именно с установки locale с использованием boost.
Сборка Boost для MinGW
Вначале скачиваем последнюю версию Boost (на момент написания статьи это версия 1.61) и распаковываем архив в одну из папок. В моём случае архив был распакован по следующему пути:
D:\EVILEG\boost_1_61_0После чего открываем консоль и переходим в эту папку. В данной папке имеется батник bootstrap.bat для сборки инструмента bjam, который предназначен для управления компиляцией библиотек под целевой компилятор. Чтобы собрать данный инструмент для MinGW необходимо выполнить следующую команду:
bootstrap.bat gccПосле того, как инструмент будет собран выполняем сборку всех необходимых библиотек следующей командой:
b2 toolset=gcc link=shared --prefix=boost_mingw_530 install // ,где // toolset - это инструментарий, которым будут собираться библиотеки, // то есть тип компилятора, которым Вы будете собирать библиотеки // link - это тип библиотек, в данном случае shared - динамические // --prefix - папка куда будут скопированы заголовочные файлы и собранные библиотеки // в моём случае D:\EVILEG\boost_1_61_0\boost_mingw_530Далее можно заняться своими делами, поскольку процесс этот не быстрый.
Примечание
Отмечу, что выбор компилятора, которым будут собраны библиотеки будет определяться тем, какие переменные окружения прописаны в вашей ОС. То есть от того, какой путь прописан к компилятору g++ в переменной PATH. У меня от предыдущих версий Qt остались прописаны пути:
D:\Qt\5.6\mingw49_32\bin; D:\Qt\Tools\mingw490_32\bin;И соответственно на выходе я получил библиотеки для компилятора MinGW 4.9.2. Да, я не успел ещё удалить предыдущую версию Qt 5.6 с MinGW 4.9.2 . Надо ли говорить, что у меня проект под Qt5.7 с компилятором MinGW 5.3.0 отказался собираться? Так что после прописывания правильных путей удалось собрать нужные библиотеки:
D:\Qt\5.7\mingw53_32\bin; D:\Qt\Tools\mingw530_32\bin;Сборка Boost для MSVC
Процесс будет полностью аналогичен тому, что и для MinGW, но с небольшой разницей в командах.
bootstrap.bat vc12 // Пока использую MSVC 2013 Community b2 toolset=msvc-12.0 link=shared --prefix=boost_msvc installВ процессе сборки могут возникнуть некоторые ошибки, которые также обусловлены путями в переменных ОС. Например такая:
"cl" не является внутренней или внешней командой . и т.д.Лечится прописыванием путей к компилятору MSVC, например:
D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;Также могут возникнуть проблемы, что не будут находиться пути к заголовочным файлам стандартной библиотеки. Что будет выражено информацией в файле bootstrap.log :
### ### Using 'vc12' toolset. ### D:\EVILEG\boost_1_61_0\tools\build\src\engine>if exist bootstrap rd /S /Q bootstrap D:\EVILEG\boost_1_61_0\tools\build\src\engine>md bootstrap D:\EVILEG\boost_1_61_0\tools\build\src\engine>cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c command.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set compile.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set constants.c debug.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set execcmd.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set execnt.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set filent.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set frames.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set function.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set glob.c d:\evileg\boost_1_61_0\tools\build\src\engine\jam.h(71) : fatal error C1034: ctype.h: no include path set hash.cТоже потребуется некоторое шаманство с путями, либо даже переустановка MSVC, либо можно пойти по наиболее простому пути, который сэкономит нервные клетки, и просто скачать предкомпилированные библиотеки с сайта Boost-а.
Подключение Boost к Qt проекту
- QtBoostHello.pro
- main.cpp
QtBoostHello.pro
В зависимости от компилятора, осуществляем подключение необходимых заголовочных файлов и библиотек:
- INCLUDEPATH - подключаем заголовочные файлы
- LIBS - подключаем библиотеки
QT += core QT -= gui CONFIG += c++11 TARGET = QtBoostHello CONFIG += console CONFIG -= app_bundle TEMPLATE = app win32-g++ < INCLUDEPATH += D:/EVILEG/boost_1_61_0/boost_mingw_530/include/boost-1_61 LIBS += -LD:/EVILEG/boost_1_61_0/boost_mingw_530/lib -llibboost_locale-mgw53-mt-1_61 >else:win32-msvc* < INCLUDEPATH += D:/EVILEG/boost_1_61_0/boost_msvc_2012/include/boost-1_61 LIBS += -LD:/EVILEG/boost_1_61_0/boost_msvc_2012/lib -lboost_locale-vc120-mt-1_61 >SOURCES += main.cppmain.cpp
В функции main присутствует один из классов из библиотеки Boost - это generator. Глубоко копать не будем, нам же нужно просто запустить проект. Отметим лишь то, что он используется для установки локали, как видно из кода.
Также, для этого класса используется динамическая библиотека. Но не для всего функционала необходимы библиотеки, часть Boost - это шаблонные функции, которые полностью определены в заголовочных файлах.
#include #include using namespace boost::locale; using namespace std; int main(int argc, char *argv[]) < QCoreApplication a(argc, argv); generator gen; locale loc=gen("en_US.UTF-8"); locale::global(loc); // Make it system global cout.imbue(loc); // Set as default locale for output cout <
at we had run our first localization example") % time(0) На выходе получим результат, как на изображении ниже. Если поиграетесь с определением локали, то есть вместо "en_US.UTF-8" пропишите "ru_RU.UTF-8", то заметите, что дата и время поменяют формат, впрочем, как и валюта.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Рекомендуемые статьи по этой тематике
- Boost - статическая линковка в CMake проекте под Windows
- Boost - Меню консольной программы с использованием boost::program_options
- Qt/C++ - Урок 083. Создание динамической библиотеки и подключение её в другой проект
- Qt WinAPI - Урок 004. QtIFW - Автоматизация WinDeployQt и сборки инсталляторов с Qt Installer Framework
- Qt WinAPI - Урок 003. Использование windeployqt для сбора DLL
- Qt WinAPI - Урок 002. Как сделать win инсталлятор для Qt-приложения?
По статье задано0 вопрос(ов)
Подписка на обсуждение 3
Подписка на раздел 341
Вам это нравится? Поделитесь в социальных сетях!
Как подключить Boost к Qt Creator?
Нужно подключить библиотеку boost/asio к проекту (чистое консольное с++ приложение для практики) в qt creator.
Скачал исходники с сайта. Прочитал что asio не надо билдить и все находится в хидерах.
В гугле прочитал что достаточно добавить директорию в INCLUDEPATH += .
Добавил INCLUDEPATH += C:/WORK/boost_1_59_0 .
После этого в редакторе работает автодополнение в #include "boost/asio.hpp" .
Но при сборке выдает
C1083: Cannot open include file: 'boost/asio.hpp': No such file or directory
Запустил qmake - стало выводить
C1083: Cannot open include file: 'winsock2.h': No such file or directory

Это в одном из хидеров подключается другой хидер который он не может найти.
Подключил правильный комплект сборки.
Стало выдавать
LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-gd-1_59.lib'
- Вопрос задан более трёх лет назад
- 8412 просмотров
Комментировать
Решения вопроса 1
Artem @JustSokol Автор вопроса
newby programmer
В общем все решилось тем что надо было правильно записать все в файл проекта (*.pro) и нажать qmake.
При этом хоть изначальная библиотека (asio) основана только на header`ах и имплементациях, но использует другие библиотеки Boost и соответственно подключает/включает их при подключении соответствующего .hpp .
То есть необходимо было собрать предварительно весь буст своим компилятором в либы, либо скачать уже готовые под винду с офф сайта .
В итоге в файл .pro добавляется
INCLUDEPATH += C:/WORK/boost_1_59_0 LIBS += "-LC:\WORK\boost_1_59_0\lib64-msvc-12.0"
жмется qmake и дальше все собирается.
ПС: получилось что сам спросил - сам ответил.
но надеюсь зато в следующий раз кто-то быстро найдет в поисковике проблему и увидит решение.
как в QtCreator подключить Boost::asio?
Видать линкер не может чего-то найти, а чего не может не говорит.
undefined reference to boost::system::generic_category() undefined reference to boost::system::generic_category() undefined reference to boost::system::generic_category() undefined reference to boost::system::generic_category() undefined reference to boost::system::generic_category() undefined reference to pthread_key_create undefined reference to pthread_key_delete . .
гуглил, по результатам добавил
LIBS += -lboost_system
Стало так cannot find -lboost_system
yum install boost148-system
Package boost148-system already installed 🙁

