Как подключить библиотеку qt creator

How to create a library with Qt and use it in an application/ru

Contents

Введение

Создание разделяемой библиотеки

При создании совместно используемой библиотеки, которую вы бы хотели присоединить, необходимо удостовериться, что символы, которые будут использованы за пределами библиотеки, будут должным образом экспортироваться после создания библиотеки. Впоследствии они будут импортированы при присоединении. Это может быть сделано с помощью Q_DECL_EXPORT и Q_DECL_IMPORT как показано в следующем примере:

class TEST_COMMON_DLLSPEC Widget : public QWidget <

test.pro TEMPLATE = lib

SOURCES += test.cpp HEADERS += test.h DEFINES += TEST

Присоединение разделяемой библиотеки к приложению

Чтобы использовать разделяемую библиотеку в приложении, вы можете включить ее заголовок в ваш код и использовать доступные методы. Скомпилируйте и соберите с.lib файл. Во время выполнения будет загружена dll, у которой имеется реализация.

int main(int argc, char *argv[]) <

Использование QLibrary, для загрузки разделяемых библиотек

Следующий пример показывает, как установить библиотеку для использования с QLibrary. Для разрешения имен функций, они должны быть экспортированы из библиотеки как C функции (т.е. без искажения имени). Это означает, что функции должны быть обернуты в блок extern «C», в случае если библиотека скомпилирована компилятором C.

Вот как делается это на Windows, также необходимо явно экспортировать функцию для использования DLL Q_DECL_EXPORT и Q_DECL_IMPORT

qlibraryLibrary.pro TEMPLATE = lib HEADERS += widget.h SOURCES += widget.cpp DEFINES += TEST

extern «C» TEST_COMMON_DLLSPEC QWidget* createWidget1();

Загрузка библиотеки, используя QLibrary

Следующий пример загружает выше-созданную библиотеку, и использует одну из ее функций для создания и отображения виджета.

int main(int argc, charargv) <

Создание статической библиотеки

test.pro TEMPLATE = lib CONFIG+= staticlib

HEADERS += test.h SOURCES += test.cpp

Использование статической библиотеки в приложении

useStaticLib.pro TEMPLATE = app TARGET = CONFIG+= console

int main(int argc, char *argv[]) <

Какой подход выбрать

Принятие решения о том, какой подход выбрать, зависит от Ваших потребностей.

Статическое подключение позволяет создать автономно исполняемую программу. Преимущество состоит в том, что для работы программы вам необходимо будет установить только несколько файлов. Недостаток в том, что исполняемые программы большие.

Источник

Добавление внешней библиотеки в проект Qt Creator

Как добавить внешнюю библиотеку в проект, построенный Qt Creator RC1 (версия 0.9.2)? Например, функция win32 EnumProcesses() требует Psapi.lib для добавления в проект для сборки.

7 ответов

правильный способ сделать это так:

таким образом, он будет работать на всех платформах, поддерживаемых Qt. Идея заключается в том, что вы должны отделить каталог от имени библиотеки (без расширения и без префикса «lib»). Конечно, если вы включаете конкретный lib для Windows, это действительно не имеет значения.

вы используете qmake проектов? Если это так, вы можете добавить внешнюю библиотеку с помощью LIBS переменной. Например:

ошибка, которую вы имеете в виду, связана с отсутствием дополнительного пути включения. Попробуйте добавить его с помощью: INCLUDEPATH += C:\path\to\include\files\ Надеюсь, это сработает. С уважением.

и добавить несколько файлов библиотеки вы можете написать, как показано ниже:

INCLUDEPATH *= E:/DebugLibrary/VTK E:/DebugLibrary/VTK/Common E:/DebugLibrary/VTK/Filtering E:/DebugLibrary/VTK/GenericFiltering E:/DebugLibrary/VTK/Graphics E:/DebugLibrary/VTK/GUISupport/Qt E:/DebugLibrary/VTK/Hybrid E:/DebugLibrary/VTK/Imaging E:/DebugLibrary/VTK/IO E:/DebugLibrary/VTK/Parallel E:/DebugLibrary/VTK/Rendering E:/DebugLibrary/VTK/Utilities E:/DebugLibrary/VTK/VolumeRendering E:/DebugLibrary/VTK/Widgets E:/DebugLibrary/VTK/Wrapping

мы разрабатываем приложения для Linux, Mac и Windows, используя Qt. Мы грузим полные, отдельно стоящие применения. Так что все несистемные библиотеки должны быть включены в пакет развертывания. Мы хотим, чтобы наши клиенты могли запускать приложение с одного USB-накопителя для всех ОС. По причинам из совместимости платформы USB-накопитель должен быть отформатирован как FAT32, который не поддерживает символические ссылки (Linux).

мы не можем позволить, чтобы компоновщик использовал символические ссылки на библиотеки, поскольку это нарушило бы пакет развертывания.

мы хотим видеть от имя библиотеки, связываем ли мы статическую или динамическую библиотеку.

поэтому для нашего конкретного случая мы используем только абсолютные filepaths и проверьте, существуют ли они. Мы удаляем все ссылки.

Сначала мы узнаем, какую операционную систему мы используем, и помещаем это в переменную CONFIG. И, например, для Linux 64bit, затем:

все зависимости могут быть скопированы в пакет развертывания, поскольку мы знаем их пути к файлам.

Я хотел бы добавить для полноты, что вы также можете добавить только путь к библиотеке, где он будет искать зависимую библиотеку (на которую может не быть прямой ссылки в вашем коде, но библиотека, которую вы используете, может понадобиться).

для сравнения, это будет соответствовать тому, что делает среда LIBPATH, но ее вид неясен в Qt Creator и не хорошо документирован.

путь, которым я обошел это, следующий:

по сути, если вы не укажите фактическое имя библиотеки, он добавляет путь к тому, где он будет искать зависимые библиотеки. Разница в синтаксисе невелика, но это очень полезно, чтобы указать только путь, где искать зависимые библиотеки. Иногда это просто боль, чтобы предоставить каждому пути отдельную библиотеку, где вы знаете, что все они находятся в определенной папке, и Qt Creator подберет их.

Источник

Qt Documentation

Contents

In addition to Qt libraries, you can add other libraries to your projects. The way the library is added depends on the type and location of the library. You can add a system library, your own library, or a 3rd party library. The library can be located either in the build tree of the current project or in another build tree.

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Because system libraries do not typically change and are often found by default, you do not need to specify the path to the library or to its includes when you add it. You can use pkg-config to query system libraries during compilation.

For your own libraries and 3rd party libraries, you need to specify the paths. Qt Creator tries to guess the include path for an external library, but you need to check it and modify it if necessary. Qt Creator automatically adds the include path for an internal library.

For all libraries, select the target platforms for the application, library, or plugin.

Specify whether the library is statically or dynamically linked. For a statically linked internal library, Qt Creator adds dependencies (target_link_libraries when using CMake or PRE_TARGETDEPS when using qmake) in the project file.

Depending on the development platform, some options might be detected automatically. For example, on macOS, the library type (Library or Framework) is detected automatically and the option is hidden. However, if you develop on another platform than macOS and want to build your project for macOS, you must specify the library type.

The default convention on Windows is that the debug and release versions of a library have the same name, but are placed in different subdirectories, usually called debug and release. If the library path does not contain either of these folders, you cannot select the option to place the libraries in separate folders.

Alternatively, the letter d can be added to the library name for the debug version. For example, if the release version is called example.lib, the debug version is called exampled.lib. You can specify that the letter is added for the debug version and removed for the release version. If the library name ends in d, deselect the Remove «d» suffix for release version option.

Qt Creator supports code completion and syntax highlighting for the added libraries once your project successfully builds and links to them.

To Add Libraries

For more information about the project file settings, see Declaring Other Libraries.

Example of Adding Internal Libraries

To add an internal library to your project:

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

When using CMake, the target_link_libraries command is added to the CMakeLists.txt file:

В© 2021 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.

Источник

На форуме возник вопрос, как создать динамическую библиотеку и правильно её подключить в сторонний проект. Периодически такие вопросы возникают, поэтому рассмотрим один вариант создание динамической библиотеки dll для Windows с использованием визардов стандартных в Qt Creator.

В данном случае не будет рассматриваться вариант, когда проект разбивается на подпроекты, которые компилируются как библиотеки и потом подключаются в главный проект. Поскольку это будут динамические внутренние библиотеки проекта. Создадим именно внешнюю библиотеку, которую теоретически можно будет распространять в виде бинарников.

Создадим два проекта:

Шаг 1

Выберем в меню Qt Creator создание проекта и выберем тип нашего проекта. Это будет библиотека на C++.

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 2

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 3

Выберем комплекты для сборки проекта.

Здесь имеется очень важный момент, а котором новички могут забывать. Если вы собираете проект с помощью компилятора определённой версии, то и использовать данные библиотеки можно будет только в проекте, который будет собираться компилятором той же версии.

Я собираю данную библиотеку компилятором MSVC2017.

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 4

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 5

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 6

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 7

Посмотрим на файлы проекта и немного модифицируем их.

Структура проекта

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

QuiLib.pro

В данном файле имеется информация о том, что это именно библиотека. Вот в данной строчке.

Вот полный код pro-файла

quilib_global.h

Хедер для определения дефайнов экспорта в библиотеке. Классы, которые будут помечены дефайном экспорта, будут доступны для использования вне библиотеки.

QuiLib.h

Подкорректируем немного заголовочный файл диалогового окна, нам ведь нужен именно диалог, а значит класс в данном заголовочном файле потребуется наследовать от QDialog.

QuiLib.cpp

Также напишем реализацию конструктора диалогового окна, чтобы он нам сообщил с помощью QLabel, что это диалоговое окно из внешней библиотеки.

Шаг 8

Скомпилируем проект в Debug и Release версиях.

Вот например, что будет в каталоге release сборки библиотеки. Из тех файлов нам понадобятся только файлы QuiLib.dll и QuiLib.lib. Помимо этих файлов нужны ещё будут заголовочный файлы из самого проекта, но об этом немного позднее.

Как подключить библиотеку qt creator. Смотреть фото Как подключить библиотеку qt creator. Смотреть картинку Как подключить библиотеку qt creator. Картинка про Как подключить библиотеку qt creator. Фото Как подключить библиотеку qt creator

Шаг 9

Создание проекта, который будет использовать эту динамическую библиотеку. Процесс создания будет стандартный, через визард в Qt Creator. Нужно будет выбрать Приложение на Qt.

Добавить название проекта и место его размещения

Источник

Динамические библиотеки в Qt

Введение

До начала работы с библиотекой Qt я программировал различные задачки на С++ в университете, а на работе использовал Delphi. И конечно же, в процессе работы создавались различные библиотеки. Создавались, можно сказать, с трудом. Не хватало в повседневной жизни тех плюсов, которые давало ООП. Всегда хотелось экспортировать из библиотек целые классы, причем делать это просто, быстро и беззаботно. При этом вопросы о создании библиотек на С++ и дальнейшем их использовании в проектах на Delphi или C возникали очень редко.

И вот я участвую в разработке своего первого проекта с использованием библиотеки Qt. Чтение книг, ассистента, форумов, статей и идеи, идеи, идеи. Проект большой, содержит множество компонентов, а опыт наша команда набирала, скажем так, в боевых условиях.

Создание библиотеки

В процессе работы ставилось множество задач, одной из которых и было создание единой методики создания библиотек для нужд проекта. Чтобы этой методикой могли воспользоваться начинающие программисты участвующие в разработке. Она достаточно простая и опытные разработчики используют ее не задумываясь.

Большая часть изменений касается *.pro файла Вашей будущей библиотеки:

О функции qtLibraryTarget

Правим код

Экспорт классов и функций

О сборке библиотек в linux

Эта часть pro-файла будет создавать одновременно динамические библиотеки в debug и release версиях на windows, linux, mac.

Использование библиотеки

При этом подразумевается, что в корне вашего проекта имеется две папки:
lib — Содержит бинарные файлы библиотеки. include — содержит папку MyLibrary со всеми заголовочными файлами библиотеки.

Заключение

Библиотека Qt является удобным инструментом реализации ваших идей и проектов. Она сильно упрощает жизнь программисту, потому что создание библиотек в проектах на Qt — очень простая и понятная задача.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *