Развертывание Qt-Application не работает. Отсутствует точка входа и DLL - PullRequest
0 голосов
/ 30 августа 2018

В последние месяцы я создал проект с версией Qt-Creator 4.7.0, версией Qt 5.11.1 (версия с открытым исходным кодом).

Теперь я попытался развернуть его, следуя Qt doc и собрав проект с помощью компилятора MSVC2017-64bit, а затем запустив windeployqt.exe на сгенерированном исполняемом файле.

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

Точка входа? eventFilter @ QAbstractItemView @@ MEAA_NPEAVQObject @@ PEAVQEvent @@@ Z не найден в DLL "my / project / path / releasefolder / project.exe".

Мне кажется, что-то не так с Qt-объектами, которые я использую в своем проекте, но я ничего не смог найти, так как он все еще работал безупречно в Qt-Creator.

Возможно, это связано с проблемами в компиляторе, поэтому я изменил его на mingw32, который я тоже пытался развернуть аналогичным образом. Но каким-то образом в этом случае предупреждение исчезло, но многие библиотеки DLL все еще отсутствовали, хотя windeployqt.exe уже должен был это сделать. И я также не мог найти их где-нибудь на моем жестком диске. Я также попробовал третий компилятор, но проблемы не исчезли.

Я искал в Интернете и нашел только людей, у которых были проблемы с точкой входа, отсутствующие в dll Qt или вообще отсутствующие в Qt-Dlls, но я не нашел ничего связанного с моим делом.

Я также пробовал Dependency Walker на каждом исполняемом файле, но он обнаружил еще больше отсутствующих dll, что привело меня к мысли, что исполняемые файлы каким-то образом обрезаны, поэтому я пробовал это снова и снова, но, к сожалению, безуспешно.

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

РЕДАКТИРОВАТЬ: Сборка с использованием Desktop Kit в Qt Creator с MSVC2017 появилось описанное предупреждение. При сборке с Mingw32 (Desktop Kit) и с MSVC2017 с использованием UWP Kit в Qt Creator отсутствовала следующая библиотека DLL, которую я нигде не нашел на своем жестком диске: MSVCP140_APP.dll

EDIT2: Я закончил тем, что скачал требуемую dll, чтобы как-то заставить ее работать, но она все равно не работала. Одна сборка, которая требовала, чтобы dll теперь запускалась, но немедленно снова закрывалась, а другая сборка внезапно предупреждала меня о отсутствующей точке входа в процедуру.

РЕДАКТИРОВАТЬ [РЕШЕНИЕ]: Я позволил Qt Creator создать совершенно новый свежий проект и скопировал все файлы из моего старого проекта в новый. После этого я только скопировал все файлы DLL в папку, и это сработало.

1 Ответ

0 голосов
/ 31 августа 2018

Вместо того, чтобы полагаться на windeploy, вручную добавьте dll. Я предполагаю, что вы создали проект, используя mingw. Предполагая, что вы используете Qt 5.11.1, перейдите к C: \ Qt \ Qt5.11.1 \ 5.11.1 \\ bin \, скопируйте все файлы dll и вставьте их в исполняемую папку. Также скопируйте все каталоги из папки плагинов (в / plugins) и вставьте в вашу папку. Теперь запустите приложение, не закрывайте приложение. Теперь удалите все файлы из вашей исполняемой папки. Один, который не используется, удаляется, а остальные остаются. Я предполагаю, что вы делаете это на целевом компьютере. Это может помочь.

...