it-swarm.asia

كيو تي 5.1.1: فشل التطبيق في بدء التشغيل بسبب "نوافذ" البرنامج المساعد للنظام الأساسي


تحرير: بدأ بعض الأشخاص وضع علامة على سؤالي كمكرر. لا تنس أن العديد من الأسئلة المشابهة كانت موجودة عندما طرحت هذا السؤال (انظر على سبيل المثال القائمة أدناه). ومع ذلك ، أي من هذه الإجابات حل مشكلتي . بعد عملية بحث طويلة ، وجدت تعليقًا تم تجاهله من قبل جميع المستخدمين الذين أشاروا إلى lib المفقودة. الآن ، بعد عدة أشهر ، تم تغيير التعليق إلى إجابة. ومع ذلك ، عندما أجبت على هذا السؤال من قِبل msyself ، كنت أنوي مساعدة الآخرين عن طريق تقديم الحل مباشرةً. لا ينبغي أن ننسى هذا ، وحتى الآن ساعد جوابي الكثير من الناس. لذلك سؤالي هو بالتأكيد ليست مكررة. بالمناسبة: الإجابة المقبولة داخل الرابط المتوفر في الأعلى لا تحل المشكلة !


نعم ، استخدمت البحث:

فشل تحميل البرنامج المساعد للنظام الأساسي "ويندوز". الأنظمة الأساسية المتوفرة هي: خطأ

نشر تطبيق Qt C++ من خطأ Visual Studio qwindows.dll

أخفق تحميل "windows" المساعد للنظام الأساسي: الأنظمة الأساسية المتوفرة هي: windows ، والحد الأدنى

ومع ذلك ، في حالتي المشكلة لا تزال قائمة. أنا أستخدم Qt 5.1.1 مع Visual Studio 2012 وقمت بتطوير تطبيقي على Windows 7 باستخدام Qt Creator 2.8.1. يتم تصنيف التطبيق في "الإصدار" - وضع ويمكن تنفيذه إذا بدأت مباشرة مع Qt Creator.

ومع ذلك ، عند بدء التشغيل من "الإصدار" - المجلد ، أحصل على الرسالة التالية:

أخفق بدء تشغيل هذا التطبيق لأنه لم يتمكن من العثور على "windows" المكون الإضافي للنظام الأساسي Qt أو تحميله. المكونات الإضافية للنظام الأساسي هي: الحد الأدنى ، خارج الشاشة ، ويندوز.

هيكل المجلد يشبه هذا:

release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms

الأنظمة الأساسية هي المجلد الذي تم نسخه مباشرة من Qt\Qt5.1.1\5.1.1\msvc2012\plugins\platform بما في ذلك على سبيل المثال qwindows.dll. لا يهم إذا قمت بإعادة تسميته إلى "النظام الأساسي" كما فعل بعض المستخدمين الآخرين. كيو تي لا تزال لا تجد "نوافذ البرنامج المساعد" ، أين هو خطأي؟

110
Anonymous

حسنًا ، كما هو موضح هنا https://stackoverflow.com/a/17271172/1458552 دون الكثير من الاهتمام من قبل المستخدمين الآخرين:

libEGL.dll كان مفقودًا! على الرغم من أن هذا لم يتم الإبلاغ عنه عند محاولة بدء التطبيق (تم الإبلاغ عن كافة * .dlls الأخرى مثل Qt5Gui.dll).

63
Anonymous

لقد أنشأت دليل الأنظمة الأساسية بجوار موقعي exe ووضعت qwindows.dll بداخله ، لكنني ما زلت أتلقى "فشل تحميل المكون الإضافي للنظام الأساسي" windows ". الأنظمة الأساسية المتاحة هي: windows".

لقد قمت بنسخ qwindows.dll من C:\Qt\Qt5.1.1\Tools\QtCreator\bin\plugins\platform ، وهو ليس الموقع الصحيح. نظرت إلى سجل التصحيح من التشغيل في Qt Creator ووجدت أن تطبيقي كان يبحث في C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platform عند تشغيله في مصحح الأخطاء.

عندما نسخت من C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platform ، كل شيء سار على ما يرام.

34
Brandon

لقد وجدت حل غير متوقع ولكن بديهية. إذا قمت بنسخ ولصق qwindows.dll ، الموجود في صندوق المترجم الذي استخدمته لتحرير التطبيق الخاص بك ، في مجلد باسم "المنصات" ، يمكنك بعد ذلك نقل هذا المجلد إلى نفس الدليل مثل التطبيق الخاص بك ومثل السحر الذي يعمل به.

نصيحة أخرى مفيدة أيضًا ، تأتي Qt مع تطبيقات وحدة تحكم النظام الأساسي التي ستضيف جميع التبعيات (بما في ذلك تلك مثل qwindows.dll و libEGL.dll) إلى مجلد الملف القابل للتنفيذ المنشور. يُطلق على تطبيق windows windeployqt ويمكن الاطلاع على الوثائق هنا http://doc.qt.io/qt-5/windows-deployment.html .

20
CrippledTable

تعيين متغير البيئة QT_QPA_PLATFORM_PLUGIN_PATH إلى٪ QTDIR٪\plugins\platform \ عملت معي .

كما ذكر هنا و هنا .

11
Jim G.

لقد واجهت هذا ولا أجد أي من الإجابات التي يمكن أن أجدها ثابتة بالنسبة لي.

تم تثبيت كوتي كولي (5.6.0) على جهازه على: C:\Qt\Qt5.6.0\5.6\msvc2015\plugins
قمت بتثبيت Qt (5.6.2) في نفس الموقع.

تعلمت من هذا المنشور: http://www.tripleboot.org/؟p=536 ، أن Qt5Core.dll لديه موقع على الإضافات المكتوبة إليه عندما يتم تثبيت Qt لأول مرة. نظرًا لأن زميلي وأدليتي Qt كانت متماثلة ، ولكن تم تثبيت إصدار مختلف من Qt ، يلزم وجود ملف qwindows.dll مختلف. عندما قمت بتشغيل exe نشره بواسطته ، فسيستخدم ملف C:\Qt\Qt5.6.0\5.6\msvc2015\plugins\platform\qwindows.dll بدلاً من الملف الموجود بجانب الملف التنفيذي في المجلد الفرعي.\platform.

للتغلب على هذا ، أضفت السطر التالي من التعليمات البرمجية إلى التطبيق والذي يبدو أنه يجبره على البحث بجوار exe للمجلد الفرعي 'platform' قبل أن ينظر إلى المسار الموجود في Qt5Core.dll.

QCoreApplication::addLibraryPath(".");

لقد أضفت السطر أعلاه إلى الطريقة الرئيسية قبل استدعاء QApplication مثل هذا:

int main( int argc, char *argv[] )
{
    QCoreApplication::addLibraryPath(".");
    QApplication app( argc, argv );
    ...
    return app.exec();
}
7
Joel

قم بإنشاء dir platforms وانسخ qwindows.dll إليها ، platforms و app.exe في نفس دير

cd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll

بنية المجلد + app.exe + platforms\qwindows.dll

5
KunMing Xie

لقد وجدت حل آخر. قم بإنشاء qt.conf في مجلد التطبيق على هذا النحو:

[Paths]
Prefix = .

ثم انسخ مجلد الإضافات إلى مجلد التطبيق ويعمل لي.

3
Peter Quiring

تحتوي معظم هذه الإجابات على معلومات جيدة (صحيحة) ، لكن في حالتي ، لا يزال هناك شيء مفقود.

تم بناء تطبيقي كمكتبة (dll) ويطلق عليه تطبيق غير كيو تي. لقد استخدمت windeployqt.exe لإعداد كيو تي دلس ، والأنظمة الأساسية ، والإضافات ، وما إلى ذلك في دليل التثبيت ، لكنه لا يزال يتعذر عليه العثور على النظام الأساسي. بعد إجراء بعض التجارب ، أدركت أن دليل عمل التطبيق قد تم تعيينه على مجلد مختلف. لذلك ، أمسك الدليل الذي "عاش" دلل باستخدام GetModuleHandleExA وأضاف هذا الدليل إلى مسار مكتبة كيو تي في وقت التشغيل باستخدام

QCoreApplication::addLibraryPath(<result of GetModuleHandleExA>);

هذا عملت لي.

2
Jacob Robbins

واجهت هذه المشكلة أثناء استخدام QT 5.6 و Anaconda 4.3.23 و python 3.5.2 و pyinstaller 3.3. لقد قمت بإنشاء برنامج بيثون بواجهة تم تطويرها باستخدام QTcreator ، لكن كان لا بد لي من نشرها على أجهزة كمبيوتر أخرى ، لذلك كنت بحاجة لجعل برنامج قابل للتنفيذ ، باستخدام برنامج pyinstaller.

لقد وجدت أنه تم حل المشكلة على جهاز الكمبيوتر الخاص بي إذا قمت بتعيين متغيرات البيئة التالية:

QT_QPA_PLATFORM_PLUGIN_PATH:٪ QTDIR٪\plugins\platform \

QTDIR: C:\Miniconda3\pkgs\qt-5.6.2-vc14_3\Library

ولكن هذا الحل يعمل فقط على جهاز الكمبيوتر الخاص بي الذي تم تثبيت كوندا و كيو تي في تلك المجلدات.

لحل هذه المشكلة وجعل العمل القابل للتنفيذ على أي جهاز كمبيوتر ، اضطررت إلى تعديل ".spec" (الملف الذي أنشأه pyinstaller لأول مرة) لتضمين السطر التالي:

datas = [['' C:\Miniconda3\pkgs\qt-5.6.2-vc14_3\Library\plugins\platform * .dll '،' platform ')،]

يعتمد هذا الحل على إجابات Jim G. و CrippledTable

1
Loebsen Van de Graaff

كان لدي نفس المشكلة وحلها من خلال تطبيق العديد من الأشياء. الأول ، إذا كان البرنامج الذي قمت به مع كيو تي.

في المجلد (في حالتي) الخاص بـ "C:\Qt\Qt5.10.0\5.10.0\msvc2017_64\plugins" تجد مجلدات أخرى ، أحدها هو "منصات". سيتم نسخ مجلد "الأنظمة الأساسية" بجوار الملف القابل للتنفيذ .exe. الآن ، إذا حصلت على الخطأ 0xc000007d هو أنك لم تنسخ الإصدار الذي كان عليه ، لأنه يمكن أن يكون 32 بت أو 64.

إذا تابعت الأخطاء ، فأنت تفتقر إلى المزيد من المكتبات. باستخدام برنامج "Dependency Walker" ، يمكنك اكتشاف بعض المجلدات المفقودة. بالتأكيد سيشير لك أنك بحاجة إلى NVIDIA .dll ، ويخبرك بالموقع.

هناك طريقة أخرى ، بدلاً من استخدام "Walker Dependency Walker" وهي نسخ جميع ملفات .dll من مجلد "C:\Windows\System32" بجوار الملف القابل للتنفيذ. قم بتنفيذ. exe الخاص بك وإذا كان كل شيء يتم تحميله جيدًا ، لذلك لا يوجد لديك مساحة مشغولة في مكتبات dll التي لا تحتاج إليها أو تستخدمها ، استخدم برنامج exe. مع كل خياراتك ودون إغلاق .exe الذي تقوم به هو محو كل الملفات. dll الذي قمت بنسخه للتو بجانب .exe ، لذلك إذا كان يتم استخدام تلك dll. من قِبل البرنامج ، فلن يسمح لك النظام بمسح ، فقط إزالة تلك التي ليست ضرورية.

آمل أن يكون هذا الحل يخدمك.

تذكر أنه إذا كان نظام التشغيل 64 بت ، ستكون المكتبات في المجلد System32 ، وإذا كان نظام التشغيل 32 بت ، فسيكون أيضًا في مجلد System32. يحدث هذا بحيث لا توجد أية مشاكل توافق مع البرامج التي تبلغ 32 بت في جهاز كمبيوتر 64 بت. يحتوي المجلد SysWOW64 على ملفات 32 بت كنسخة احتياطية.

1
Ire

إذا كنت قد قمت بتثبيت Anaconda أوصي بإلغاء تثبيته ومحاولة تثبيت حزمة python من المصدر ، أصلحت هذه المشكلة بهذه الطريقة

0
Soberbia coding

بالنسبة لي كان الحل هو تصحيح المتغير PATH. كان Anaconda3\Library\bin كأحد المسارات الأولى. يحتوي هذا الدليل بعض مكتبات Qt ، ولكن ليس كلها. على ما يبدو ، هذه مشكلة. نقل C:\Programs\Qt\5.12.3\msvc2017_64\bin إلى مقدمة PATH حل المشكلة بالنسبة لي.

0
Jann Poppinga

يقوم التطبيق qtbase/bin/windeployqt.exe بنشر تطبيقك تلقائيًا. إذا قمت ببدء تشغيل موجه مع تعيين envirenmentvariables بشكل صحيح ، فإنه ينتقل إلى الدليل الحالي. تجد مثالا على البرنامج النصي:

@echo off
set QTDIR=E:\QT\5110\vc2017

set INCLUDE=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\include;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\include;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\cppwinrt

set LIB=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x86;

set LIBPATH=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17134.0;C:\ProgramFiles (x86)\Windows Kits\10\References\10.0.17134.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;

Path=%QTDIR%\qtbase\bin;%PATH%
set VCIDEInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\
set VCINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\
set VCToolsInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\
set VisualStudioVersion=15.0
set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
set VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
set VS120COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
set VS150COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\
set VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
set VS90COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
set VSINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\
set VSSDK110Install=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VSSDK\
set VSSDK150INSTALL=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.14393.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.14393.0\
set WindowsSDKVersion=10.0.14393.0\
set WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\
set WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\

mkdir C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
cd C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
copy /Y ..\Release\application.exe .
windeployqt application.exe
pause
0
MyGeertRo

استخدم هذا الملف الدفعي: RunWithQt.bat

@echo off
set QTDIR=C:\Qt\Qt5.1.1\5.1.1\msvc2012\bin
set QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms\
start %1
  • لاستخدامه ، اسحب ملف gui.exe الخاص بك وقم بإفلاته في RunWithQt.bat في Explorer ،
  • أو اتصل بـ RunWithQt gui.exe من سطر الأوامر
0
Jakub Krzesłowski

بالنسبة لنظام MinGW وإذا كنت تقوم بتجميع هدف Debug من خلال إعلان مكتوب خاص CMakeLists.txt مخصص ، فأنت بحاجة إلى إضافة qwindows.dll إلى النظام الأساسي dir أيضًا. يعمل windeployqt القابل للتنفيذ بشكل جيد ، لكن يبدو أنه لسبب غريب يحتاج بناء CMake إلى إصدار متغير أيضًا. باختصار ، سيكون من الأفضل امتلاك كل من qwindows.dll و qwindowsd.dll في دليل النظام الأساسي الخاص بك. لم ألاحظ نفس النتيجة الغريبة عند استيراد مشروع CMake في QtCreator ثم قم بتشغيل إجراء الإنشاء. ترجمة على سطر الأوامر يبدو أن مشروع CMake يؤدي إلى تشغيل تبعية qwindows.dll إما إذا تم تعيين الصحيح لهدف Debug (qwindowsd.dll)

0
Michal Turlik

دعنا نقول ، أردت أن يكون لديك بعض { CGAL-Demos محمولة. إذاً ، سيكون لديك مجلد "CGAL" ، وفيه مجلد فرعي واحد يسمى "lib": كل dlls الخاصة بالدعم لأي برامج في المجلد CGAL اذهب هنا. في مثالنا ، سيكون هذا هو { Dll-Download : ببساطة قم بفك الضغط في دليل "lib". كلما قمت بالتمرير لأسفل على demos-page ، كان المحتوى أكثر إثارة للإعجاب. في حالتي ، بدا { polyhedron-demo صحيحًا. إذا كان هذا يعمل على دفتر ملاحظاتي 10+ yo ، فأنا معجب. لذلك قمت بإنشاء مجلد "تجريبي" في دليل "CGAL" ، إلى جانب "lib". الآن قم بإنشاء ملف .cmd في هذا المجلد. أنا اسمه الألغام "Polyhedron.cmd". لذلك لدينا بنية دليل مثل هذا:

 CGAL - the bag for all the goodies
  lib - all libraries for all CGAL-packages
 demo - all the demos I'm interested in
[...] - certainly some other collections, several apps per folder...
Polyhedron.cmd - and a little script for every Qt-exe to make it truly portable.

في هذا المثال الصغير ، يحتوي "Polyhedron.cmd" على النص التالي:

@echo off
set "me=%~dp0"
set PATH=%me%lib
set "QT_PLUGIN_PATH=%me%lib\plugins"
start /b "CGAL Polyhedron Demo" "%me%demo\polyhedron\polyhedron_3.exe"

جميع النصوص يمكن أن تكون هي نفسها بصرف النظر عن السطر الأخير ، بشكل واضح. التحذير الوحيد هو: "نافذة DOS" تبقى مفتوحة طالما كنت تستخدم البرنامج الفعلي. أغلق نافذة Shell ، وتقتل * .exe أيضًا. أينما قمت بنسخ "CGAL" - المجلد ، مثل "٪ ~ dp0" غريب - يمثل Wriggle المسار الكامل إلى الملف * .cmd الذي بدأناه ، مع "\". لذا "٪ me٪ lib" هي دائمًا المسار الكامل إلى المكتبة الفعلية ("CGAL\lib" في حالتي). يخبر السطران التاليان كيو تي أين توجد ملفات "وقت التشغيل". سيكون هذا على الأقل ملف "qwindows.dll" لبرامج Windows-Qt بالإضافة إلى أي عدد من * .dlls. إذا كنت أتذكر بحق ، فإن مكتبة Dll (على الأقل عندما قمت بتنزيلها) لديها القليل من "الأخطاء" لأنها تحتوي على دليل "الأنظمة الأساسية" مع qwindows.dll فيه. لذلك عندما تفتح دليل lib ، ستحتاج إلى إنشاء مجلد "plugins" بجوار "platform" ، ثم move إلى "plugins". إذا لم يجد Qt-app ، any Qt-app ، "qwindows.dll" ، فلن يتمكن من العثور على "windows". ويتوقع ذلك في دليل باسم "الأنظمة الأساسية" في دليل "الإضافات" ، والذي يجب أن يخبره نظام التشغيل الخاص به بالعمل ... وإذا كان "QT_PLUGIN_PATH" لا يشير بالضبط إلى جميع dlls المساعدة التي تحتاج ، بعض البرامج كيو تي لا تزال تعمل مع أي probs. ويشكو البعض من فقد * .dlls التي لم تسمع بها مطلقًا ...

0
Thomas Sturm