Evgenii Legotckoi
Evgenii Legotckoi16. August 2015 10:43

Qt WinAPI - Lektion 001. Wie sammelt man alle DLLs, die im Qt-Projekt verwendet werden?

Früher oder später sieht sich jeder Qt-Entwickler mit der Notwendigkeit konfrontiert, seine Anwendung auf andere Rechner zu portieren, und dann gibt es das Problem, Bibliotheken auf dem Zielrechner zu haben, die notwendig sind, damit die Anwendung startet und funktioniert. Dies kann sich besonders bemerkbar machen, wenn eine Anwendung übertragen wird, die unter Windows OS ausgeführt werden soll. Wenn unter Linux die notwendigen Qt-Bibliotheken standardmäßig vorhanden sind, wie beispielsweise bei Ubuntu, dann sind sie unter Windows möglicherweise gar nicht vorhanden.

Aber das Finden und Erstellen aller notwendigen Bibliotheken kann für einen Anfänger eine schwierige Aufgabe und für einen erfahrenen Programmierer eine ziemlich mühsame Aufgabe sein. Aber auch hier gibt es dank freundlicher Menschen eine Lösung. Dies ist das Dienstprogramm DLL Collector. Mit diesem Dienstprogramm können Sie die Abhängigkeiten eines Programms abrufen, das im Qt-Framework geschrieben wurde, und die Bibliotheksdaten automatisch in einen bestimmten Ordner kopieren.

Wie Autor schreibt, sucht das Dienstprogramm nach Abhängigkeiten in der Laufzeit des Prozesses. Daher muss Ihr Programm über dieses Dienstprogramm gestartet werden. DLL Collector sammelt Informationen über alle ladbaren Plugins, die von Ihrem Programm verwendet werden, aber vergessen Sie nicht, dass Plugins geladen werden, wenn sie zum ersten Mal von den Funktionen Ihres Programms verwendet werden. Daher ist es notwendig, Ihr Programm durch seine Funktionalität laufen zu lassen, damit DLL Collector alle Bibliotheken findet.


Wie der DLL-Kollektor funktioniert

Schritt eins. Utility-Setup

In diesem Schritt müssen Sie Folgendes tun:

  1. Geben Sie im Feld Name den Pfad zum kompilierten Programm an;
  2. Geben Sie im Feld bin den Pfad zu den Binärdateien der Qt-Bibliotheken an;
  3. Geben Sie den Pfad zu den Qt-Plug-ins im Feld plugins an;
  4. Geben Sie den Pfad zu dem Ordner an, in den die DLL-Bibliotheken kopiert werden
  5. Aktivieren Sie das Kontrollkästchen neben Mülleimer zur Umgebung hinzufügen

Schritt zwei. Starten Ihrer Anwendung

Nachdem die Konfiguration abgeschlossen ist, starten Sie Ihre Anwendung, indem Sie auf die Schaltfläche Run. klicken

Schritt drei. Aktualisieren der Liste der Plugins und Bibliotheken

Nachdem Ihre Anwendung gestartet wurde, klicken Sie auf die Schaltfläche Aktualisieren . Eine Liste mit Plugins und Bibliotheken wird angezeigt. Spielen Sie auch ein wenig mit Ihrer Anwendung, um sicherzustellen, dass DLL Collector alle Abhängigkeiten findet, und klicken Sie einige Male auf die Schaltfläche Aktualisieren , um sicherzustellen, dass alle Abhängigkeiten gefunden werden.

Schritt vier. Kopieren von Bibliotheken

Nachdem die Bibliotheken gefunden wurden, drücken Sie die Schaltfläche Kopieren und alle Bibliotheken werden kopiert.

Zusammenfassung

Zusammenfassend kann ich sagen, dass das Dienstprogramm sehr nützlich ist und das Leben viel einfacher macht.

Zum Zeitpunkt des Schreibens des Artikels hat der Autor eine neue Version des Programms veröffentlicht, aber persönlich ist es für mich abgestürzt. Deshalb verwende ich noch die ältere Version, die Sie hier herunterladen können: DLLCollector

Sie können sich mit dem Programm auch auf Seite des Autors vertraut machen.

Vergessen Sie auch nicht, ein Installationsprogramm für Ihre Anwendung zu erstellen, und erfahren Sie im nächsten Artikel , wie das geht.

Videoanleitung

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

V
  • 30. September 2017 15:20
Evgenii Legotckoi
  • 1. Oktober 2017 04:12

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

Также можете ещё посмотреть в сторону официальной утилиты от Qt. Вот ссылка.
V
  • 1. Oktober 2017 09:11

Старая не работает с компиляторами msvc , попросту ничерта не находит , новая с ними же выдаёт ошибку при нажатии updаte , обе версии работают  с mingw , однако старая нашла 51 модуль , новая 45. И обе игнорят целый пакет библиотек от MS VS . В общем , подскажите аналогичную программу , может тогда всё нормально станет.

Evgenii Legotckoi
  • 1. Oktober 2017 13:31

Есть ещё Dependency Walker. Сам не использовал, но часто натыкался на форумах, что его советуют для поиска DLL-ок.

Avazart
  • 25. März 2018 08:00

Вероятно по тому что Вы пытаетесь использовать сборщик x32 для сборки Qt x64.
Стоило скачать исходники сборщика и перекомпилить.

Avazart
  • 25. März 2018 08:03

Dependency Walker не справляет с этой задачей он не видит плагинов.

Если использовать, то использовать ProcessExplorer которыей в принципе должен отображать то же что и мои сборщик.

Avazart
  • 25. März 2018 08:05

Кстати программу я давно обновил, если есть замечания по работе пишите в мой лучше в блог.

Evgenii Legotckoi
  • 26. März 2018 03:17

Добрый день!

А почему вы не предоставляете сборку программы и для x64?
Я как бы понимаю, что программисту не должно составить труда перекомпилить программу из исходников. Но плюс вашей софтины в том, что она удобна для новичков. А опытный Qt-программист скорее будет использовать windeployqt.
То есть не каждый новичок сразу разберётся с компиляцией сборщика из исходников под необходимую целевую платформу.
Так что, возможно имело бы смысл сделать несколько сборок под последние актуальные версии MSVC.
Или у вас есть некоторые дополнительные аргументы против?
Avazart
  • 26. März 2018 03:59

Добрый день!
У меня нет возможности собрать под x32.

Кроме того если человек до сих по не научился нажимать кнопочку "собрать" проект, то ему лучше вообще не заниматься программированием.

И почему только для новичков?
Профи программистами не нужно собирать ддлки в кучу?

Касательно windeployqt:
1. Cобирает не все.
2. Cобирает то что вообще не нужно, порой такое впечатление что он тупо копирует все подряд.
3. Ну и как понимаю он не анализирует зависимости от сторонних библиотек.





Avazart
  • 26. März 2018 04:00

Поправка: У меня нет возможности собрать под x64.

Avazart
  • 26. März 2018 04:02

Да и я еще планирую поддерживать сборку под Linux.
Но по в связи с внесением изменений она не работает.

Evgenii Legotckoi
  • 26. März 2018 04:15

К сожалению, ваша программа работает только в рантайме,

  1. Запустить Вашу программу из QtCreator.
  2. Прогнать Вашу программу по всему функционалу , что бы она подгрузила все плагины и qml библиотеки.
Конечно, она позволяет проанализировать все зависимости и взять только необходимое, но при этом нужно запускать программу и прогонять её вручную по функционалу.

Но вы понимаете, что в некоторых случаях и некотором рабочем процессе внедрять подобное не имеет смысла.
Я например работаю над проектом, билд которого разворачивается на пару десятков гигабайт, а сборка билдов для тестирования осуществляется через Service Jenkins в автоматическом режиме. Как бы в крупных проектах многое стараются автоматизировать, поэтому возьмут windeployqt и никого не будет волновать наличие пары десятков лишних библиотек занимающих 50 мб, когда исходный комплект со всеми библиотеками весит 2 Гб.
А сторонние либы идут предкомпилированные в репозитории и собираются через qmake в общий билд.

Прогонять такую софтину по всему функционалу в одних только автоматических тестах составляет несколько часов. А вручную задача непосильная.

В общем со всех сторон есть вполне адекватные доводы, и я согласен с вашими насчёт windeployqt. Но тут уже вопрос компромиса.

А так меня интересовало вообще про x64, но если нет возможности, то тогда вопросов не имею. Спасибо.
Avazart
  • 26. März 2018 04:37

Моя программа работает в рантайме ибо нет другого способа узнать все зависимости.

Как что от чего зависит внутри Qt могут знать только разработчики Qt.
Но то что windeployqt работает криво говорит от том что и у них проблемы с пониманием.

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


Как бы в крупных проектах многое стараются автоматизировать, поэтому возьмут windeployqt и никого не будет волновать наличие пары десятков лишних библиотек занимающих 50 мб, когда исходный комплект со всеми библиотеками весит 2 Гб.
Ну с таким успехом можно тупо копирнуть папку QtDIR
И удалить все лишнее.

Получите где-то ~200 MБ это как и будет весь Qt комплект (а не 50M или 2ГБ)






Avazart
  • 26. März 2018 04:40

А насколько часто Вы собираете деплой?
Это как бы делается в самом конце так что не должно быть частым.

Evgenii Legotckoi
  • 26. März 2018 04:55

Деплой делается при каждом коммите, каждой ветви, автоматически, чтобы тестировщики могли проводить тестирование проекта нон-стоп.

На проекте работает 60+ программистов, каждый работает в среднем над одной двумя User Story, плюс каждый багфикс делается в отдельной ветви.
И каждая ветвь билдится. Тестировщик просто скачивает готовый чистый билд со всеми библиотеками.
Под сборку выделен отдельный сервер. Помимо Qt используем Open Cascade, Wt::dbo, Boost и ещё ряд библиотек, так что Qt занимает лишь малую часть. Поэтому на выходе имеем 700 мб.
Так что... примерно 50-60 деплоев в день будет. Если не больше.
Avazart
  • 26. März 2018 04:59

Согласен, это морока.
Качать каждый раз по 700M ...

Сомневаюсь что сам набор библиотек так часто меняться по крайней мере касающихся Qt

Evgenii Legotckoi
  • 26. März 2018 05:05

Да, набор библиотек часто не меняется, но отслеживать в рантайме... это не имеет смысла, проще раз написать скрипт, который будет собирать всё, что нужно и немного лишнего, но зато всё будет работать. Так и живём )) Поэтому и говорю, что пару лишних либ из Qt никто даже не заметит ))

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

Если будет время, я сделаю билд под x64 на работе. Я напишу, когда будет готово.

Avazart
  • 26. März 2018 05:07

Это вообще лишено смысла, пусть тестировщик держит все либы у себя на компе, и подменяет только исполняемый файл. А деплоить только перед финальным выпуском.

Evgenii Legotckoi
  • 26. März 2018 05:13

Сам проект состоит примерно из 20-ти подпроектов и все билдится в библиотеки. Запускаемый файл весит 28кб, а собираемые библиотеки, которые были написаны в рамках проекта - остальные 300 мб.
Если бы всё собиралось в один исполняемый файл, то программисты бы очешуели ждать пересборку при каждом изменении кода.

Используем специальный python-скрипт, который склеивает исходники перед сборкой, поэтому полный чистый билд составляет 27 минут, без скрипта 3 часа ))))
Так что просто заменить исполняемый файл не канает
Avazart
  • 26. März 2018 05:20

Ну сути это не меняет.

Avazart
  • 26. März 2018 05:21

Нет смысла деплоить одно и тоже каждый раз.

Evgenii Legotckoi
  • 26. März 2018 05:26

Какая-то библиотека может быть изменена в рамках одной единственной ветви из более чем 200 веток, над которыми работают в текщий момент времени.
Предлагаете обучать каждого тестировщика отслеживать, изменилась ли какая-то из библиотек? Бред. Люди имеют свойство забывать и ошибаться. Автоматический скрипт подготовит все необходимые библиотеки и уложит в подготовленный полноценный пакет. Тестировщику нужно лишь знать, откуда скачать.

Avazart
  • 26. März 2018 05:31

Библиотека Qt ?

Evgenii Legotckoi
  • 26. März 2018 05:34

Qt тоже. Там тоже хватает багов, которые мы исправляем.

Avazart
  • 26. März 2018 05:37

Про главным образом Qt и шла речь,
Если правятся исходники Qt то согласен для этого случая иначе нельзя.

Evgenii Legotckoi
  • 26. März 2018 05:39

А при чём тут только один Qt? Ваша же программа собирает и другие зависимые библиотеки. А значит здесь не только Qt, помимо прочего я уже говорил про Wt::dbo, Boost, Open Casecade. Может быть User Story на обновление библиотеки или исправление какого-то бага в этой библиотеки. Зачем заниматься ручной работой и напоминать тестировщику, что если программист что-то исправил, то нужно заменить библиотеку? Есть для этого автоматический скрипт, который просто потратит немного процессорного времени на копирование. Этого гораздо менее накладно, чем нагружать людей лишней ручной работой.

Avazart
  • 26. März 2018 05:49

По тому что LibraryCollector заточен конкретно именно под деплой Qt приложений.
Он видит другие зависимости но не делает из сборку
(да и откуда программе знать что нужно для Вашего специфичного проекта)

Пользователь должен сам найти в списке нужные библиотеки и чекнуть их что бы они скопировались(при чем будет тупое копирование в папку исп.файла).

В новой версии LibraryCollector можно добавить свои правила правкой js-скрипта что бы настроить сборку согласно специфике своего проекта и его библиотек.
(Например, если у Вас такая же муторная система плагинами с иерархией папок)



Avazart
  • 26. März 2018 05:52

Или Вы хотите сказать что windeployqt видит зависимости от

Wt::dbo, Boost, Open Casecade.
?

Evgenii Legotckoi
  • 26. März 2018 05:58

Нет, это я не хотел сказать (к сожалению это не так). Говорю о том, что Ваша программа отлично справляется со своей функцией и позволяет также найти недостающие сторонние библиотеки, но это может быть только разовая операция, чтобы разобраться с конкретной проблемой (ну не получается найти конкретную нужную версию (будем считать, что разработчик жёстко не выспался сегодня)), но в рамках автоматизации сборку Qt библиотек лучше положить на windeployqt, если только у вас не поддерживается консольный вариант работы (?), а сторонние бибилотеки держать в рамках репозитория и производить их копирование в итоговый билд. Чтобы просто не нагружать специалистов не нужной работой, а всю сборку просто поставить на поток через автоматизацию.

Evgenii Legotckoi
  • 26. März 2018 05:59

Но опять же... у вас зависимости ищутся в рантайме. Что также не получится автоматизировать... к сожалению...

Avazart
  • 26. März 2018 06:07

Дело в том что искать сторонние библиотеки как правило не проблема, по тому что у сторонних библиотек как правило нет такое ерунды с плагинами которые подгружаются по мере необходимости.

В таких случаях достаточно проанализировать структуру PE файла (экзешника)
а точнее таблицу импорта (даже не нужно запускать процесс)

Вся проблема в плагинах Qt которые отслеживаются только в процессе и только после прогона по функционалу. Могу конечно предположить что есть библиотеки которые делают так же, но не могу привести примеры.

Консольный вариант можно легко допилить, но смысла мало ибо по любому нужен прогон программы по функционалу.
 

Avazart
  • 26. März 2018 06:12

Кстати так советуемый на форумах Dependency Walker скорее всего так и делает- анализирует таблицу импорта - и видит только модули Qt, а плагины и qml пропускает.


RG
  • 24. Juni 2020 14:33

Евгений, здравствуйте! Первое, что скажу - спасибо за ваш сайт и вашу работу.
Пользовался DLL Collector'ом для сбора библиотек, дальше только выпускал новые экзешники и менял ими старые, все работало. Но вот перестало: новый экзешник при запуске выдает ошибку, что не найдена библиотека qt5network.dll, добавил вручную, появилась новая ошибка "точка входа в процедуру ... не найдена в qt5core.dll". Тут я уже решил заново в коллекторе собрать все библиотеки, но он стал выдавать "Process started. Process crashed. Process finished". Где нужно искать ошибку, что исправлять?

Evgenii Legotckoi
  • 25. Juni 2020 01:23

Добрый день. Спасибо за отзыв.
Если честно, то я уже тут не подскажу. Я этой программкой уже так давно не пользовался и даже не знаю, что уважаемый Avazart (разработчик DLL Collectora) там менял.

Avazart
  • 25. Juni 2020 04:48
  • (bearbeitet)

Нужно больше информации что бы сказать что не так.
Версия Qt, версия компилятора. И вообще собираете последней версией моей программы?
И нельзя просто так менять одну dll. Нужно менять всё при смене версии.
Кроме того network часто тащит ssl библиотеки.

В последней версии я сделал так что можно писать js скрипт сценирий для распределения по группам сборки.
Т.е. по сути можно свои группы добавлять и прочие вещи под себя. Я подумал что такая гибкость будет кстати. Есть конечно и негативные стороны изменений - выполняется вроде как чуть дольше и я поломал сборку по Linux (но вроде как ей все равное никто не пользуется)

RG
  • 25. Juni 2020 08:25
  • (bearbeitet)

QT 4.11.0, MinGW 32bit 5.9.8
Ваша программа скачана по ссылке из статьи, не знаю, где там версию посмотреть. Собирал через windeployqt отдельно - то же самое, недоставало некоторых библиотек. Изначально для устранения ошибки качал недостающие библиотеки с просторов интернета, и это приводило к "точка входа в процедуру ... не найдена в qt5core.dll". Проблему решил добавлением библиотек из папки mingw53_32\bin.

PS: перепутал адресат, ответ Azavart'у

Avazart
  • 25. Juni 2020 09:53
  • (bearbeitet)

100% LibraryCollector увидил зависимости просто Вы их не "чекнули" в окне поэтому они не были добавленны. Для автоматического подхвата MinGW библиотек стоило js-скрипт поправить, по умолчанию там только msvc.

R
  • 1. Juli 2020 15:04

Добрый день. Вы писали, что под х64 нужно пересобрать проект, при сборке появляются ошибки типа
C:\SRC\LibraryCollector-lc_js\LibraryCollector-lc_js\wrappers\dir.cpp:149: ошибка: invalid conversion from 'QFlagsQDir::Filter::Int {aka int}' to 'Dir::Filter' [-fpermissive]
Dir::Filters filters_= (int)dir_.filter();

C:\SRC\LibraryCollector-lc_js\LibraryCollector-lc_js\wrappers\dir.cpp:155: ошибка: invalid conversion from 'QFlagsDir::Filter::Int {aka int}' to 'QDir::Filter' [-fpermissive]
QDir::Filters filter_= (int)filter;

C:\SRC\LibraryCollector-lc_js\LibraryCollector-lc_js\wrappers\dir.cpp:161: ошибка: invalid conversion from 'QFlagsQDir::SortFlag::Int {aka int}' to 'Dir::SortFlag' [-fpermissive]
Dir::SortFlags sorting_= (int)dir_.sorting();

Как это исправить?

Avazart
  • 1. Juli 2020 15:18

Да помнится так были проблемы при сборке MinGW я вроде исправил но на гит не закомитил. Если завтра будет время займусь.

R
  • 1. Juli 2020 15:27

Не думал, что так оперативно ответите. Спасибо большое, буду ждать! =)

Avazart
  • 2. Juli 2020 08:52
  • (bearbeitet)

Обновил на гите исходники https://github.com/Avazart/LibraryCollector/tree/lc_js
Пожалуйста отпишитесь об успешности пересборки, обратная связь важна.

R
  • 3. Juli 2020 07:16
  • (bearbeitet)

Да, собралось. После сборки при запуске требовались dll, перекинул всю папки bin, plugins(не знаю как можно было сделать более умно). Как я понял в первой строке путь к екзешнику вставляю, вторая строка пусть к компилятору, третья куда будут переноситься все необходимые файлы и четвертая просто выбрать скрипт который лежит в папке с коллектором, выбрать две галочки и нажать запуск, после проюзать программу и нажать апдейт? Список bin, plugins, qml, resources и т.д. не отображается. Когда нажимаю апдейт коллектор закрывается а программа продолжает работать, что в таком случае я сделал неправильно?

upd.
Перекинул все файлы с архива проекта в собранную версию, начали подгружаться автоматически настройки и высвечиваться список bin, plugins, qml, resources и т.д. Указал все папки верно при нажатии на run пишется "неверно задано имя папки"(5 раз переписывал путь).

upd2.
Написал в пути к папке с компилятором msvc, нажал run, появилось сообщение в консоле что запущено, затем поставил нормальный путь к папке с компилятором и все заработало, но теперь при попытке все скопировать выскакивают ошибки в консоле, что невозможно скопировать файл из папки в папку.

upd3.
Не знаю, что произошло, но с 5 перезапуском все работает отлично (разве что не может скопировать исполняемый файл с заменой если копирую в ту же папку, где он находится), спасибо большое, все работает отлично)
С Вашего позволения могу выставить сюда ссылку на гугл диск с архивом коллектора х64 на 264мб? Или может подскажете, как поудалять в нем все ненужные файлы, которые я туда закинул, чтобы уменьшить размер?

R
  • 3. Juli 2020 07:34
  • (bearbeitet)

Deleted

Avazart
  • 3. Juli 2020 08:15
  • (bearbeitet)

Стоило перед использованием что ли инструкцию прочитать
https://www.cyberforum.ru/blogs/131347/blog2457.html

"После сборки при запуске требовались dll,"
Ясное дело стоило задеплоить сборщик самим "себя".
Кроме DLL нужно еще было скопировать папку с js-скриптами и ini -файл с настройками из исходников. И ясное дело изменить пути на свои под свою сборку где нужно. В обще так как это сделоно в 32битной версии деплоя выложенном мною на форуме.

"вторая строка пусть к компилятору"
Не к компилятору, а к QTDIR т.е. папка сборки/комплекта Qt.

""Указал все папки верно при нажатии на run пишется "неверно задано имя папки"(5 раз переписывал путь). ""
Значит таки не верное указали. За поддержкой обращайтесь к гадалке.

"что невозможно скопировать файл из папки в папку. "
Значит не возможно. Может звезды не сошлись или плохая карма опять же к гадалке.
Мне же нужно дословное описание ошибки.

R
  • 3. Juli 2020 13:55
  • (bearbeitet)

Вы меня не совсем правильно поняли, но все равно спасибо, принял все к сведению. Все сделал как вы сказали, все отлично работает, еще раз огромнейшее спасибо) Разве что только что были опять проблемы с неверным именем папки, после перезапуска все работает. И не стоит иронизировать с гадалкой, я в QT новичек да и в этих тонкостях сборки с dll и проектов в QT очень слабо знаком, поэтому расписал так, как понял это сам) Вам скинуть архив для размещения х64 версии в вашей статье?

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken