Почему мое приложение QT не работает?

Я создал приложение Qt 5 с помощью Qt Creator в 64-разрядной версии Windows 7 (с использованием msvc 2010). Приложение отлично работает на моем компьютере, но не будет работать на других компьютерах.

Я скопировал все .dll, которые были показаны как отсутствующие в Dependency Walker, в папку программы, и ошибки нет, но приложение просто не запускается.

Я тестировал его на Windows XP и Windows 7 64 и 32 бит.
Что я могу сделать, чтобы узнать, что случилось?

ОБНОВЛЕНИЕ: я установил Qt 4.8.4 (по сравнению с 2008 годом) и msvc 2008 express, и я скомпилировал его, и он работает на других компьютерах с .dll Qt4. может кто знает в чем проблема с Qt5 ...


person avi software    schedule 17.01.2013    source источник
comment
Попробуйте запустить исполняемый файл из командной строки, чтобы вы могли прочитать сообщение об ошибке и добавить его в свой вопрос. Это может помочь   -  person Anti Earth    schedule 17.01.2013
comment
@AntiEarth, которые дают мне пустую строку. нет сообщения об ошибке ...   -  person avi software    schedule 17.01.2013
comment
Если ваше приложение находится в режиме отладки, оно не должно работать на другом компьютере. Даже с необходимыми dll. Если да - сделайте вариант Release   -  person borisbn    schedule 17.01.2013
comment
@borisbn мое приложение находится в режиме выпуска ... и ничего ..   -  person avi software    schedule 17.01.2013
comment
@avisoftware какой ABI вы выбрали в Tools/Options/Build&Run/Tool Chains меню?   -  person borisbn    schedule 17.01.2013
comment
@avisoftware Пробовали ли вы запустить его на своем компьютере, дважды щелкнув exe-файл в проводнике, или вы запускаете его только из Qt Creator?   -  person sashoalm    schedule 17.01.2013
comment
@borisbn Microsoft Visual C ++ Compiler 10.0 (x86) по умолчанию.   -  person avi software    schedule 17.01.2013
comment
@satuon да. он хорошо работает с .dll в папке ....   -  person avi software    schedule 17.01.2013
comment
Ди вы его строите с опцией release?   -  person prehistoricpenguin    schedule 17.01.2013
comment
Убедитесь, что вы скопировали и необходимые плагины, возможно, у вас возникла такая проблема: stackoverflow.com/questions/14291078/   -  person Eugene    schedule 18.01.2013
comment
возможный дубликат Приложение, развернутое с библиотеками QT5, не запустить в Windows 7   -  person sean e    schedule 20.01.2013
comment
зависит не будет определять зависимости от подключаемых модулей Qt, поскольку они загружаются динамически - проблема, скорее всего, связана с подключаемым модулем Windows в соответствии с другим вопросом, который я пометил как дубликат.   -  person sean e    schedule 20.01.2013


Ответы (5)


У меня такая же проблема.

Вам необходимо включить каталог «platform», содержащий qwindows.dll и qminimal.dll, в ваш исполняемый каталог. Вы можете найти каталог в папке «plugins».

Если вы не добавите это, ваше приложение будет загружаться, а затем выйдет с кодом возврата 0. Уходщик зависимостей не может вам помочь, потому что библиотеки DLL загружаются с задержкой.

person David de Bruyn    schedule 17.06.2013

У меня была та же проблема - я добавил все библиотеки DLL, о которых сообщает Dependency Walker, но моя программа немедленно завершилась без сообщения об ошибке при запуске.

Я добавил libEGL.dll в каталог программы, и теперь она работает нормально.

Я предполагаю, что libEGL.dll загружается динамически одной из других библиотек DLL - вероятно, libGLESv2.dll, на основании того, что из всех известных зависимостей он имеет наиболее похожее имя (!) - и эта динамическая загрузка не является чем-то, что Dependency Walker может обнаружить .

person Garry Lancaster    schedule 20.04.2013
comment
у меня сработало! Большое спасибо!!! У меня такая же проблема. Мне не нужно было включать папку «платформа» и добавлять mingwm10.dll. Я просто добавил все файлы DLL, которые постоянно появляются в сообщении об ошибке, когда я щелкаю файл .exe, затем последний шаг - добавить libEGL.dll, и тогда он просто работает! - person hexicle; 23.06.2013

Я столкнулся с той же проблемой и узнал, что MinGW GCC 4.7 несовместим с Qt 5.0 и выше из этого this post. Я применил тот же подход, что и вы, и переключился на Qt Creator 4.8, который работал.

person Random_NPC    schedule 03.03.2013

У меня также была такая же проблема, и я пытался с сообщениями об отсутствии DLL и Dependency Walker, и это не помогло мне, или я не знаю, правильно ли я его использовал. Приведенный ниже метод помог мне решить (для данного сценария) его. Этот метод будет работать в некоторых минимальных случаях.

Сценарий

  1. QT Creator 3.3.2
  2. QT 5.4.1 (MSVC 2010, 32-разрядная версия), ОС Windows 8.1
  3. Не используется динамическая загрузка dll.
  4. Не использовались сторонние DLL
  5. Это приложение QTWidget.

Метод (опробован как для 32-разрядной версии MinGW, так и для 32-разрядной версии MSVC2012 OpenGL)

  1. Получите exe-версию после сборки приложения. Скопируйте и вставьте в другую папку, где мы хотим (Предположим, как Z: \ abc)
  2. Перейдите в установленную папку Qt kit (MinGW OR MSVC) (в моем случае: Z: \ Qt \ 5.4 \ mingw491_32 (или) Z: \ Qt \ 5.4 \ msvc2012_opengl)
  3. Искать * .dll
  4. Скопируйте всю DLL и вставьте ее в папку с исполняемым файлом. То есть (z: \ abc)
  5. Запустить приложение (в моем случае оно запустилось нормально).
  6. При запуске приложения удалите все скопированные файлы DLL.

    6.1) При удалении окна будут отображать запросы для файлов DLL, которые используются приложением (файл в использовании), поскольку эти DLL были загружены изначально. Оставьте эти файлы как есть.

    6.2) И другие файлы DLL будут удалены, как мы и просили.

  7. Закройте приложение и снова откройте его (в моем случае оно запустилось правильно).
  8. Итак, у нас есть необходимые DLL

Это неправильный способ, но в некоторых случаях он может помочь.

Примечание

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

person Jeet    schedule 16.07.2015

Я считаю, что это должна быть какая-то DLL, которую вам нужно поместить в тот же каталог, что и ваш исполняемый файл, или, может быть, даже в каталог, который находится в вашем PATH. В любом случае, я тоже использую Qt5, и у меня та же проблема, что и у вас, если я не помещаю их в тот же каталог, что и мой exe-файл:

  • vcruntime140 [d] .dll (библиотека MSVC)
  • ucrtbase [d] .dll (другая библиотека MSVC - я использую MSVC / Visual C ++)
  • Qt5Widgets [d] .dll (библиотека Qt 5)
  • Qt5Svg [d] .dll (другая библиотека Qt 5)
  • Qt5PrintSupport [d] .dll (другая библиотека Qt 5)
  • Qt5Gui [d] .dll (как вы уже догадались)
  • Qt5Core [d] .dll (да)
  • msvcp150 [d] .dll (я считаю, что это еще один распространяемый компонент Microsoft)

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

Я добавил [d] в конец каждой из этих библиотек, потому что для отладочных сборок у них есть d в конце, а для сборок выпуска - нет. Эта часть может быть, а может и не быть такой же на вашем компьютере. Я считаю, что это сеттинг или их набор.

person 23r0c001    schedule 12.08.2020