Название: Пошаговая инструкция. Создание и использование Dll Отправлено: 8Observer8 от Февраль 17, 2014, 14:45 Инструментарий
Операционная система: Windows 7 Версия Qt: Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenGL) Создание Dll - запускаем Qt Creator - если у Вас Qt Creator на русском, то я рекомендовал бы переключиться на английский. Для этого выбираем в меню "Инструменты" -> "Параметры..." - в окне "Параметры" слева выбираем "Среда" -> открываем вкладку "Основные" -> выбираем в выпадающем списке "English" -> нажимаем кнопку "OK" -> перезапускаем Qt Creator - в меню выбираем "File" -> "New File or Project..." - в разделе "Projects" выбираем "Libraries" - в центральном разделе выбираем "C++ Library" -> нажимаем кнопку "Choose..." - в выпадающем списке: Shared Library - имя проекта: Person - выбираем путь, где будет создан проект, к примеру: D:\Documents\Qt\QtDeploying\0001_dll_Person - нажимаем "Next" -> "Next" -> "Next" -> "Finish" Изменяем файл "person.h" следующим образом: Код
- создаём реализации для функций, для этого последовательно нажимаем правой кнопкой мыши по каждой функции и выбираем "Refactor" -> выбираем "Add difinition in person.cpp" Изменяем файл "person.cpp" следующим образом: Код
Создадим debug-версию dll: - в меню выбираем "Build" -> "Build Project Person" Создадим release-версию dll: - нажимаем кнопку "Projects" на панели слева - в разделе "Build Settings" в списке "Edit build configuration" выбираем: Release - в разделе "Build Steps" напротив "qmake" нажимаем "Details" - в списке "qmake build configuration" выбираем "Release" - в поле "Additional arguments" вводим (в двойных кавычках): "CONFIG += release" - в меню выбираем "Build" -> "Build Project Person" - переходим в папку "release" проекта, там находится dll "Person.dll" - теперь мы можем использовать в других проектах файлы: person.h, person_global.h и Person.dll Использование Dll - в меню выбираем "File" -> "New File or Project..." - в разделе "Projects" выбираем "Applications" - в центральном разделе выбираем "Qt Console Application" -> нажимаем кнопку "Choose..." - имя проекта: UsageOfPersonDll - выбираем путь, где будет создан проект, к примеру: D:\Documents\Qt\QtDeploying\0002_UsageOfPersonDll - нажимаем "Next" -> "Next" -> "Finish" - копируем в папку с проектом файлы: person.h, person_global.h - подключаем к проекту файлы "person.h" и "person_global.h", для этого кликаем правой кнопкой мыши по имени проекта в Qt Creator и выбираем "Add Existing Files" -> выделяем "person.h" и "person_global.h" -> нажимаем "Open" - в меню выбираем "Build" -> "Build Project UsageOfPersonDll" - копируем файл "Person.dll" из папки "debug" проекта "Person" в папку "debug" проекта "UsageOfPersonDll" - копируем файл "Person.dll" из папки "release" проекта "Person" в папку "debug" проекта "UsageOfPersonDll" - открываем файл "UsageOfPersonDll.pro" и добавляем следующую строку (путь к "Person.dll"): Код
Примечание. Для построения релизной версии проекта нужно в "UsageOfPersonDll.pro" добавить эту строку: Код
Изменяем файл "main.cpp" следующим образом: Код
- в меню выбираем "Build" -> "Run" (или Ctrl+R) Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: OKTA от Февраль 17, 2014, 14:47 В догонку общая полезная информация о динамических библиотеках)
http://citforum.ru/book/cook/dll0.shtml http://citforum.ru/book/cook/dll1.shtml Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: Caballero от Март 05, 2014, 16:04 Добрый день, я новичок, помогите, пожалуйста :). Все сделала по инструкции, при сборке проекта UsageOfPersonDll пишет ошибку "no such file or directory". В инете не нашла ответа, который бы решил мою проблему. Прилагаю скриншот pro. файла с ошибкой.
Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: OKTA от Март 05, 2014, 16:16 1. Не используйте в путях русский буквы;
2. Тут надо не dll подключать, а lib. Dll понадобится уже потом, когда программа будет запускаться - здесь даже смысла нет их прописывать. Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: 8Observer8 от Март 13, 2014, 06:49 Добрый день, я новичок, помогите, пожалуйста :). Все сделала по инструкции, при сборке проекта UsageOfPersonDll пишет ошибку "no such file or directory". В инете не нашла ответа, который бы решил мою проблему. Прилагаю скриншот pro. файла с ошибкой. Переключите Qt Creator на английский, тогда у Вас не будет в путях русских символов. Посмотрите на свой скриншот в самом низу, там в путях кракозябы. - выбираем в меню "Инструменты" -> "Параметры..." - в окне "Параметры" слева выбираем "Среда" -> открываем вкладку "Основные" -> выбираем в выпадающем списке "English" -> нажимаем кнопку "OK" -> перезапускаем Qt Creator Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: OKTA от Март 13, 2014, 07:23 В моем креаторе не канает ;D
Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: 8Observer8 от Март 13, 2014, 08:25 В моем креаторе не канает ;D Какая у Вас версия SDK и версия Creator'а? У меня: - SDK - Qt 5.2.0 - Qt Creator - 3.0.0 Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: OKTA от Март 13, 2014, 09:38 Qt Creator 2.3.1 ;D
Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: 8Observer8 от Март 13, 2014, 09:42 Qt Creator 2.3.1 ;D Будем надеються, что у Caballero версия больше или равна той, что я использую :) Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: vorotislav от Март 18, 2015, 21:41 Доброго времени суток.
Благодарю за инструкцию! Все по полочкам, а главное работает. (зы Win8.1, Qt 5.4) Но у меня возник вопрос. Я тут решил разобраться с такой темой, как поддержка сети в своей программе. Проще говоря, пишу свой клиент-серверный чатик. Класс, для работы с сокетом решил сделать по паттерну Adapter, в связи с чем появилось как минимум 2 класса (исходя из паттерна). Далее возникла идея, раз и клиент и сервер пользуются этими классами, и они должны быть одинаковы (там прописана логика разбора пакета), то логично было бы их менять в одном месте и быть уверенным, что изменения будут доступны всем. По этой причине, захотел попутно разобраться с dll. И вот беда, во первых существует сразу несколько способов, как сделать dll. Во вторых, возможно ли запихать в длл абстракный класс + класс реализации паттера + класс реализации для сокета (и для сервера). Хотя думаю, последнее можно в программе определить на основе длл? И как лучше сделать, как отдельная библиотека или как плагин? Буду рад любым советам. Заранее благодарен. Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: panAlexey от Август 17, 2016, 10:51 Вот эти вещи надо разруливать метаусловиями.
Код: LIBS += "..\build-UsageOfPersonDll-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug\Person.dll" Код: CONFIG (debug, debug|release) { Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: __Heaven__ от Август 17, 2016, 11:18 panAlexey, у вас либа собирается в ..\build-UsageOfPersonDll-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug\Person.dll
а у меня либа собирается в .\build\UsageOfPersonDll-Desktop_Qt_5_2_0_MinGW_32bit-Debug\debug\Person.dll а под линуксом в .\build\UsageOfPersonDll-Desktop_Qt_5_2_0_MinGW_32bit-Debug\libPerson.so" Как это обработать? Кстати, имхо, либы лучше записывать Код: LIBS += -L"Path/to/lib/dir -lnameOfLib Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: kuzulis от Август 17, 2016, 14:30 Цитировать Как это обработать? Использовать QBS. А по теме, я разруливал так: == либа == <project-dir>\sources\libs\core\core.pro : Код: TEMPLATE = lib == аппликуха == <project-dir>\sources\apps\myapp\myapp.pro Код: TEMPLATE = app Но, если честно, то QMake - тот еще гемомрой. ;) Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: panAlexey от Август 17, 2016, 23:25 Но, если честно, то QMake - тот еще гемомрой. ;) ++++Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: Bepec от Август 18, 2016, 00:58 Вот если б ещё доступно рассказали про соглашения, а так же как подружить mingw dll с msvc :D Ээх.
Название: Re: Пошаговая инструкция. Создание и использование Dll Отправлено: ssoft от Август 18, 2016, 09:27 Но, если честно, то QMake - тот еще гемомрой. ;) Геморрой геморроем, но работать можно ;D. Кстати, вопрос управления структурой проекта с помощью qmake обсуждался здесь http://www.prog.org.ru/index.php?topic=30171.msg222516#msg222516 |