Qt 5.1.1: प्लेटफ़ॉर्म प्लगइन "विंडोज़" गायब होने के कारण एप्लिकेशन प्रारंभ नहीं हो पाया


124

संपादित करें: कुछ लोगों ने मेरे प्रश्न को एक डुप्लिकेट के रूप में चिह्नित करना शुरू कर दिया। यह मत भूलो कि जब मैंने यह पूछा था तो कई समान प्रश्न मौजूद थे (नीचे दी गई सूची देखें)। हालाँकि, इनमें से किसी भी उत्तर ने मेरी समस्या हल नहीं की । एक लंबी खोज के बाद मुझे एक टिप्पणी मिली , जिसे सभी उपयोगकर्ताओं द्वारा लापता परिवाद की ओर ध्यान नहीं दिया गया था। अब, कई महीनों बाद, टिप्पणी को एक उत्तर में बदल दिया गया है। हालाँकि, जब मैंने msyself के इस सवाल का जवाब दिया तो मेरा इरादा सीधे समाधान प्रदान करके अन्य लोगों की मदद करना था। यह नहीं भूलना चाहिए और अब तक मेरे जवाब से बहुत सारे लोगों को मदद मिली। इसलिए मेरा सवाल निश्चित रूप से डुप्लिकेट नहीं है। वैसे: शीर्ष पर दिए गए लिंक के भीतर स्वीकृत उत्तर समस्या का समाधान नहीं करता है !


हां, मैंने खोज का उपयोग किया:

प्लेटफ़ॉर्म प्लगइन "विंडोज़" लोड करने में विफल। उपलब्ध मंच हैं: त्रुटि

Visual Studio qwindows.dll त्रुटि से Qt C ++ अनुप्रयोग परिनियोजित करना

प्लेटफ़ॉर्म प्लगइन को लोड करने में विफल "विंडोज़" उपलब्ध प्लेटफ़ॉर्म हैं: विंडोज़, न्यूनतम

हालाँकि, मेरे मामले में समस्या अभी भी बनी हुई है। मैं विजुअल स्टूडियो 2012 के साथ Qt 5.1.1 का उपयोग कर रहा हूं और Qt क्रिएटर 2.8.1 के साथ विंडोज 7 पर अपना एप्लिकेशन विकसित किया है। एप्लिकेशन को "रिलीज़" में संकलित किया गया है और यदि इसे सीधे क्यूटी क्रिएटर के साथ शुरू किया गया है तो निष्पादित किया जा सकता है।

हालाँकि, जब "रिलीज़" से शुरू होता है, तो मुझे निम्नलिखित संदेश मिलता है:

यह एप्लिकेशन प्रारंभ करने में विफल रहा क्योंकि यह 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 \ प्लेटफार्मों से कॉपी किया गया फ़ोल्डर है, जैसे qwindows.dll। इससे कोई फर्क नहीं पड़ता कि मैं इसका नाम बदलकर "प्लेटफ़ॉर्म" रखूँ जैसा कि कुछ अन्य उपयोगकर्ताओं ने किया था। Qt को अभी भी "प्लेटफ़ॉर्म प्लगइन विंडोज़" नहीं मिल रहा है, मेरी गलती कहाँ है?


5
मुझे भी ऐसी ही समस्या थी। विंडोज 8.1 Qt 5.3.1 MinGW 32, डायनेमिक लिंकिंग। Qt के फ़ोल्डर से DLL की प्रतिलिपि बनाकर ../MyApp/platforms/qwindows.dll पर हल किया गया। नोट: पथ में कोई "प्लगइन्स" डायर नहीं है
दिमित्री


सोर इसी तरह की समस्याओं, कृपया उपकरण का उपयोग करें Depends, जो आपको DLL निर्भरता और उनसे उत्पन्न समस्याओं को दिखाएगा। आप इस उपकरण का उपयोग किसी exe या dll फ़ाइल के स्थैतिक विश्लेषण के लिए कर सकते हैं, लेकिन इसका उपयोग गतिशील रूप से भरी हुई DLL के साथ एप्लिकेशन के स्टार्टअप को दिखाने के लिए भी कर सकते हैं।
फ्लोविड्स

WindeployQt का उपयोग करें
अपंग

जवाबों:


64

ठीक है, जैसा कि यहां पोस्ट किया गया है https://stackoverflow.com/a/17271172/1458552 अन्य उपयोगकर्ताओं द्वारा अधिक ध्यान दिए बिना:

LibEGL.dll याद आ रही थी! भले ही यह आवेदन शुरू करने की कोशिश करते समय नहीं बताया गया है (अन्य सभी *। जैसे कि Qt5Gui.dll की रिपोर्ट की गई थी)।


2
मेरे मामले में: Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ bin (निश्चित रूप से आपके विज़ुअल स्टूडियो संस्करण के आधार पर)
बेनामी

8
आपको कैसे पता चला कि लापता dll libEGL था?
user1493046

4
तुम मुझे बहुत बचाया! Qt 5.3.1 पर यह एक ही समस्या थी
tarabyte

4
@ user1493046 मैं यह निर्भर करता है और इसके प्रोफाइलिंग मोड (F7) का उपयोग कर पुन: पेश करने में कामयाब रहा । एप्लिकेशन शुरू होने और त्रुटि दिखाने के बाद, libEGL.dll निर्भरता सूची में दिखाई दिया।
लापीस

17
LibEGL.dll को जोड़ने से काम नहीं हुआ। हालाँकि, निम्न परिवेश चर की स्थापना ने मेरे लिए काम किया: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ प्लेटफार्मों \
arsalank2

36

मैंने अपने exe स्थान के बगल में एक प्लेटफ़ॉर्म निर्देशिका बनाई और अंदर qwindows.dll डाल दिया, लेकिन मुझे अभी भी "प्लेटफ़ॉर्म प्लगइन को लोड करने में विफल" विंडोज़ "मिला। उपलब्ध प्लेटफ़ॉर्म हैं: विंडोज़" त्रुटि।

मैंने C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ प्लेटफार्मों से qwindows.dll की प्रतिलिपि बनाई थी, जो कि सही स्थान नहीं है। मैंने क्यूटी क्रिएटर में चलने से डिबग लॉग को देखा और पाया कि मेरा ऐप सी में दिख रहा था: डीबगर में चलने पर \ _ क्यूटी \ क्यूटी ५.१.१ \ ५.१.१ \ mingw48_32 \ plugins \ प्लेटफॉर्म।

जब मैंने C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ प्लेटफार्मों से कॉपी किया, तो सब कुछ ठीक था।


38
मेरे लिए काम करने वाले निम्न परिवेश चर को सेट करना: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ प्लेटफार्मों \
arsalank2

24

रिलीज की संभावना है कि लाइब्रेरी / प्लगइन गायब है या लाइब्रेरी गलत निर्देशिका में और गलत निर्देशिका से है।

Qt इच्छित उत्तर: Windeployqt का उपयोग करें । स्पष्टीकरण के लिए अंतिम पैराग्राफ देखें

मैनुअल जवाब:

उसी फ़ोल्डर में "Application.exe फ़ाइल" के रूप में "प्लेटफ़ॉर्म" नामक फ़ोल्डर बनाएँ। जो भी आप अपने एप्लिकेशन को "प्लेटफ़ॉर्म" फ़ोल्डर में जारी करने के लिए उपयोग करते थे, जो भी संकलक के / बिन में पाया गया, qwindows.dll को कॉपी और पेस्ट करें। जादू की तरह यह काम करता है। यदि .dll में प्लगइन्स / प्लेटफ़ॉर्म / (प्लगइन्स के साथ / बिन / के रूप में एक ही डायरेक्टरी में होने की) <- PfunnyGuy की टिप्पणी नहीं है।

ऐसा लगता है कि एक सामान्य मुद्दा यह है कि .dll को गलत कंपाइलर बिन से लिया गया था। अपने कंपाइलर से अपने qwindows.dll को कॉपी करने के लिए सुनिश्चित करें क्योंकि आपका ऐप जारी करने के लिए उपयोग किया जाता है।

Qt प्लेटफ़ॉर्म कंसोल अनुप्रयोगों के साथ आता है जो आपके आश्रित निष्पादन योग्य के फ़ोल्डर में सभी निर्भरता (qwindows.dll और libEGL.dll जैसे) जोड़ देगा। यह आपके एप्लिकेशन को परिनियोजित करने का इच्छित तरीका है, इसलिए आप किसी भी लाइब्रेरी को याद नहीं करते हैं (जो इन सभी उत्तरों के साथ मुख्य मुद्दा है)। खिड़कियों के लिए आवेदन को विंडप्लॉट कहा जाता है । प्रत्येक OS के लिए एक परिनियोजन कंसोल ऐप होने की संभावना है।


1
यह वही है जो मुझे चाहिए: नोट, qwindows.dll आपके Qt प्लेटफ़ॉर्म इंस्टॉल के बिन / में नहीं है, लेकिन प्लगइन्स / प्लेटफ़ॉर्म / में, प्लगइन्स के साथ / बिन के रूप में एक ही निर्देशिका में /
PfunnyGuy

1
धन्यवाद! सारांश में, फाइलें इस प्रकार हैं: Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll और YourApp.exe मुख्य निर्देशिका में, और उप-निर्देशिका में प्लेटफार्मों \ qwindows.dll और प्लेटफार्मों \ libEGL.dll।
पियरे

1
windeployqt सही उत्तर है। मैंने इसका इस्तेमाल किया और इसने .exe के बगल में जरूरत की हर चीज की नकल की। यह जानने के अनुमान को हटा देता है कि कौन सी dll की जरूरत है और कौन सी नहीं है
H-Al-Amri

14

QT_QPA_PLATFORM_PLUGIN_PATHपरिवेश चर को% qDDIR% \ plugins \ प्लेटफार्मों पर सेट करना मेरे लिए काम किया

यहाँ और यहाँ भी इसका उल्लेख किया गया था ।


3
हालांकि यह उत्तर आपके वर्तमान मशीन पर काम कर रहा हो सकता है, लेकिन यह उन अन्य लोगों की मदद नहीं करता है जो अपने कार्यक्रमों को अन्य मशीनों पर तैनात करने की कोशिश कर रहे हैं और विशेष रूप से यह पहचानने की आवश्यकता है कि कौन से पुस्तकालय गायब हैं / आवश्यक हैं।
आरटबार्ड

1
2017 में, यह मेरे लिए काम किया। मैं किसी भी एप्लिकेशन को तैनात नहीं करूंगा। Qt निर्माता के साथ बस Open \ New फ़ाइल या प्रोजेक्ट ... \ Qt विजेट अनुप्रयोग, फिर चलाएँ और यह एक ही संदेश के साथ क्रैश हो जाता है। इस var को सेट करने से मुझे मदद मिलती है।
फिबर

बस अपने कामचलाऊ "डिस्ट्रो" के साथ कहीं और प्लगइन्स फ़ोल्डर की प्रतिलिपि बनाएँ और एनवी संस्करण को इंगित करें - काम करना चाहिए ("क्यूटीडीआईआर" का उपयोग करने की आवश्यकता नहीं है) :)
mlvljr

9

मैं इसमें भाग गया और कोई भी उत्तर मुझे नहीं मिला जो मेरे लिए तय हो।

मेरे सहयोगी ने Qt (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 \ प्लेटफार्मों \ qwindows.dll फ़ाइल का उपयोग करने के बजाय एक निष्पादन योग्य। \ प्लेटफार्मों सबफ़ोल्डर के बगल में स्थित होगा।

इसके आस-पास जाने के लिए, मैंने कोड की निम्नलिखित पंक्ति को उस एप्लिकेशन में जोड़ा, जो इसे Qt5Core.dll में पथ को देखने से पहले 'प्लेटफ़ॉर्म' सबफ़ोल्डर के लिए exe के बगल में देखने के लिए बाध्य करती है।

QCoreApplication::addLibraryPath(".");

मैंने QApplication कॉल से पहले मुख्य पंक्ति को मुख्य विधि में इस तरह से जोड़ा:

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

1
यह एक मेरे लिए काम करता है ... लेकिन ध्यान दें कि आपको qwindowsd.dll'प्लेटफार्मों' निर्देशिका में आवश्यकता हो सकती है यदि आप ऐसी स्थिति में हैं कि आप अपने सहयोगियों के साथ डिबग बिल्ड साझा कर रहे हैं ...
HostileFork का कहना है कि SE

यह मेरे लिए काम करता है क्योंकि qwindowsd.dll का उल्लेख है, मुझे पता था कि मेरा ऐप डिबग मोड में संकलित किया गया था, और मैंने Qtxxxd.dll पुस्तकालयों को स्थापित किया था लेकिन प्लेटफ़ॉर्म फ़ोल्डर में qwindows.dll का उपयोग कर रहा था।
गुस्तावो रॉड्रिग्ज

6

डायर बनाएँ platforms और उसकी प्रतिलिपि बनाएँ qwindows.dll, platformsऔर app.exeउसी डायर में हैं

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

फ़ोल्डर संरचना + app.exe + platforms\qwindows.dll


इस प्रश्न में उल्लेख किया गया है कि "प्लेटफ़ॉर्म सीधे Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ प्लगइन्स जैसे कि
qwindows.dll

@parasietje एप्लिकेशन qwindows.dllनिर्देशिका में देख रहा है platforms। मैं इसे पोस्ट करता हूं क्योंकि मैंने इसे ठीक किया है। क्या आप डाउनवोट से पहले एक परीक्षण कर रहे हैं?
कुनमिंग ज़ी

आपका उत्तर मूल प्रश्न का उत्तर नहीं देता है। आपके उत्तर से कुछ पता चलता है कि मूल पोस्टर पहले ही कोशिश कर चुका है।
परसेंटेज

3

मुझे एक और उपाय मिला। एप्लिकेशन फ़ोल्डर में qt.conf बनाएं जैसे:

[Paths]
Prefix = .

और फिर प्लगइन्स फ़ोल्डर को ऐप फ़ोल्डर में कॉपी करें और यह मेरे लिए काम करता है।


ठीक है, मैं एक minGW, CMake, Qt 5.12- पर्यावरण में हूं, जहां विंडप्ले-टूल को नियुक्त करना संभव नहीं है। प्लेटफ़ॉर्म-फ़ोल्डर वहाँ था, लेकिन काम नहीं किया। Qt-lib में से किसी एक के साथ इसे प्रतिस्थापित करने से भी मदद नहीं मिली। अपनी चाल का उपयोग करके (फ़ोल्डर की प्रतिलिपि बनाने के बाद) फिक्स्ड। धन्यवाद!
मार्सेल पेट्रिक

2

इनमें से अधिकांश उत्तरों में अच्छी (सही) जानकारी है, लेकिन मेरे मामले में, अभी भी कुछ गायब था।

मेरा ऐप एक लाइब्रेरी (dll) के रूप में बनाया गया है और एक गैर-क्यूटी एप्लिकेशन द्वारा कॉल किया जाता है। मैं windeployqt.exeस्थापित निर्देशिका में क्यूटी dlls, प्लेटफार्मों, प्लगइन्स आदि को स्थापित करता था, लेकिन यह अभी भी मंच नहीं ढूंढ सका। कुछ प्रयोग के बाद, मुझे एहसास हुआ कि एप्लिकेशन की कार्यशील निर्देशिका एक अलग फ़ोल्डर में सेट की गई थी। इसलिए, मैंने उस निर्देशिका को पकड़ लिया जिसमें dll ने "जीवित" का उपयोग किया GetModuleHandleExAऔर उस निर्देशिका को रनटाइम का उपयोग करते हुए Qt लाइब्रेरी पथ में जोड़ा

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

इसने मेरे लिए काम किया।


2

मेरे लिए समाधान PATHचर को सही करना था । यह पहले पथों में से एक के रूप में एनाकोंडा 3 \ लाइब्रेरी \ बिन था। इस निर्देशिका में कुछ Qt लाइब्रेरी हैं, लेकिन सभी नहीं। जाहिर है, यह एक समस्या है। मूविंग C: \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin PATHमेरे लिए समस्या का हल।


1

क्यूटी 5.6, एनाकोंडा 4.3.23, पायथन 3.5.2 और पाइस्टीकर 3.3 का उपयोग करते समय मुझे यह समस्या थी। मैंने क्यूक्रीटर का उपयोग करके विकसित एक इंटरफ़ेस के साथ एक अजगर कार्यक्रम बनाया था, लेकिन इसे अन्य कंप्यूटरों पर तैनात करना था, इसलिए मुझे pyinstaller का उपयोग करके एक निष्पादन योग्य बनाने की आवश्यकता थी।

मैंने पाया है कि अगर मैं निम्नलिखित पर्यावरण चर सेट करता हूं तो समस्या मेरे कंप्यूटर पर हल हो गई थी:

QT_QPA_PLATFORM_PLUGIN_PATH:% QTDIR% \ plugins \ प्लेटफार्मों \

QDDIR: C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ लाइब्रेरी

लेकिन यह समाधान केवल मेरे पीसी पर काम करता था जिसमें उन फ़ोल्डरों में कोंडा और क्यूटी स्थापित था।

इसे हल करने और किसी भी कंप्यूटर पर निष्पादन योग्य कार्य करने के लिए, मुझे निम्नलिखित पंक्ति को शामिल करने के लिए ".spec" (पहले pyinstaller द्वारा बनाई गई फ़ाइल) को संपादित करना होगा:

डेटा = [('C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library \ plugins \ प्लेटफार्मों *। dll', 'प्लेटफार्मों'),]]

यह समाधान जिम जी और अपंग के जवाब पर आधारित है


1

मुझे एक ही समस्या थी और कई चीजों को लागू करके इसे हल किया। पहला, अगर यह एक प्रोग्राम है जो आपने Qt के साथ किया था।

"C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins" के फ़ोल्डर में (मेरे मामले में) आपको अन्य फ़ोल्डर मिलते हैं, उनमें से एक "प्लेटफ़ॉर्म" है। उस "प्लेटफ़ॉर्म" फ़ोल्डर को आपके .exe निष्पादन योग्य के बगल में कॉपी किया जाने वाला है। अब, यदि आपको त्रुटि मिलती है 0xc000007d यह है कि आपने उस संस्करण की प्रतिलिपि नहीं बनाई थी, जो कि 32 बिट या 64 हो सकती है।

यदि आप त्रुटियों के साथ जारी रखते हैं, तो आपके पास अधिक पुस्तकालयों का अभाव है। "निर्भरता वॉकर" कार्यक्रम के साथ आप कुछ लापता फ़ोल्डरों का पता लगा सकते हैं। निश्चित रूप से यह आपको संकेत देगा कि आपको एक .dll की आवश्यकता है, और यह आपको स्थान बताता है।

एक और तरीका है, "डिपेंडेंसी वॉकर" का उपयोग करने के बजाय अपनी निष्पादन योग्य फ़ाइल के बगल में अपने "C: \ Windows \ System32" फ़ोल्डर से सभी .dll को कॉपी करना है। अपने .exe को निष्पादित करें और यदि सबकुछ अच्छी तरह से लोड होता है, तो आपके पास dll पुस्तकालयों में जगह नहीं है जिसे आपको ज़रूरत नहीं है या उपयोग नहीं करना है, अपने सभी विकल्पों के साथ .exe प्रोग्राम का उपयोग करें और बिना आपके द्वारा किए गए .exe प्रोग्राम को मिटाए सभी हैं। dll जिसे आपने अभी .exe के बगल में कॉपी किया है, इसलिए यदि वे .dll आपके प्रोग्राम द्वारा उपयोग किए जा रहे हैं, तो सिस्टम आपको मिटने नहीं देगा, केवल उन को हटा देगा जो आवश्यक नहीं हैं।

मुझे उम्मीद है कि यह समाधान आपकी सेवा करता है।

याद रखें कि यदि आपका ऑपरेटिंग सिस्टम 64 बिट्स है, तो लाइब्रेरी सिस्टम 32 फ़ोल्डर में होगी, और यदि आपका ऑपरेटिंग सिस्टम 32 बिट्स का है, तो वे सिस्टम 32 फ़ोल्डर में भी होंगे। ऐसा इसलिए होता है ताकि 64-बिट कंप्यूटर में 32 बिट्स वाले प्रोग्राम्स के साथ संगतता समस्याएं न हों। SysWOW64 फ़ोल्डर में बैकअप के रूप में 32-बिट फ़ाइलें हैं।


यह काम करता है, लेकिन एक अस्थायी समाधान की तरह अधिक है। क्या कुछ ऐसा करना संभव है जिससे आपको प्लेटफ़ॉर्म फ़ोल्डर की प्रतिलिपि बनाने की आवश्यकता न हो?
ओलेग याब्लोकोव

0

एक MinGW प्लेटफ़ॉर्म के लिए और यदि आप एक हाथ से बने डिबग लक्ष्य का संकलन कर रहे हैं CMakeLists.txt लिखित तदर्थ तो आपको qwindows.dll को प्लेटफॉर्म dir में भी जोड़ना होगा। Windeployqt निष्पादन योग्य अपना काम अच्छी तरह से करता है, लेकिन ऐसा लगता है कि कुछ अजीब कारण से CMake बिल्ड के साथ-साथ रिलीज़ संस्करण की भी आवश्यकता है। सारांश में, आपके प्लेटफ़ॉर्म डायरेक्टरी में qwindows.dll और qwindowsd.dll दोनों का होना बेहतर होगा। QtCreator में CMake प्रोजेक्ट को आयात करने और फिर बिल्ड प्रक्रिया को चलाने पर मुझे वही अजीब परिणाम दिखाई नहीं दिए। कमांड लाइन पर सीएमके प्रोजेक्ट को संकलित करने से लगता है कि qwindows.dll निर्भरता को ट्रिगर करने के लिए या तो डिबग लक्ष्य के लिए सही एक सेट किया गया है (qwindowsd.dll)


0

इस बैच फ़ाइल का उपयोग करें: 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 पर एक्सप्लोरर में छोड़ दें,
  • या RunWithQt gui.exeकमांड लाइन से कॉल करें

0

यदि आपके पास एनाकोंडा स्थापित है, तो मैं आपको इसे अनइंस्टॉल करने और स्रोत से अजगर पैकेज स्थापित करने की कोशिश करता हूं, मैंने इस समस्या को इस तरह से ठीक किया है


0

अनुप्रयोग 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

कहते हैं, आप कुछ CGAL- डेमोस पोर्टेबल होना चाहते थे । तो आपके पास एक फ़ोल्डर "CGAL" होगा, और इसमें 1 सबफ़ोल्डर जिसे "lib" कहा जाता है: CGAL- फ़ोल्डर में किसी भी प्रोग्राम के लिए सभी (आम) सपोर्ट-डीएलएस यहाँ जाएँ। हमारे उदाहरण में, यह Dll-Download होगा : बस "lib" डायरेक्टरी में अनज़िप करें। जितना अधिक आप डेमो-पेज पर स्क्रॉल करेंगे , सामग्री उतनी ही प्रभावशाली होगी। मेरे मामले में, पॉलीहेड्रोन-डेमो सही के बारे में लग रहा था। अगर यह मेरे 10+ यो नोटबुक पर चलता है, तो मैं प्रभावित हूं। इसलिए मैंने "सीजीएएल" -निर्माता के साथ एक फ़ोल्डर "डेमो" बनाया, साथ ही "लिब" भी। अब उस फोल्डर में एक .cmd-file बनाएं। मैंने अपना नाम "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"

सभी लिपियाँ अंतिम पंक्ति से अलग हो सकती हैं, जाहिर है। एकमात्र चेतावनी यह है: "डॉस-विंडो" जब तक आप वास्तविक कार्यक्रम का उपयोग करते हैं, तब तक खुला रहता है। शेल-विंडो बंद करें, और आप * .exe भी मारते हैं। जहाँ भी आप "CGAL" -फ़ोल्डर की नकल करते हैं, जैसा कि अजीब "% ~ dp0" -wriggle उस पूर्ण पथ का प्रतिनिधित्व करता है जो हमने शुरू की ".cmd-file के साथ" \ "। इसलिए "% me% lib" हमेशा वास्तविक लाइब्रेरी (मेरे मामले में "CGAL \ lib") का पूर्ण पथ है। अगली 2 पंक्तियाँ Qt को बताती हैं कि इसकी "रनटाइम" फाइलें कहाँ हैं। यह कम से कम फाइल "qwindows.dll" होगा विंडोज-क्यूटी प्रोग्राम्स के लिए * .dlls की किसी भी संख्या के साथ। अगर मुझे ठीक से याद है, तो Dll- लाइब्रेरी (कम से कम जब मैंने इसे डाउनलोड किया था) में थोड़ी "बग" थी क्योंकि इसमें "प्लेटफ़ॉर्म" -निर्देशिका qwindows.dll के साथ है।ले जाने के "प्लग इन" में। यदि कोई Qt-app, कोई Qt-app, "qwindows.dll" नहीं ढूँढता है, तो वह "विंडोज़" नहीं खोज सकता। और यह "प्लगइन्स" निर्देशिका में "प्लेटफ़ॉर्म" नामक एक निर्देशिका में इसकी अपेक्षा करता है, जिसे इसे ओएस को इसके चालू होने के बारे में बताना होगा ... और अगर "QT_PLUGIN_PATH" आपको सभी हेल्पर-डीएलएस की ओर इशारा नहीं करता है जरूरत है, कुछ क्यूटी-प्रोग्राम अभी भी बिना किसी प्रोब के साथ चलेंगे। और कुछ शिकायतें गायब होने के बारे में *।


0

क्यूटी संस्करण 5.14.0 से आने वाले किसी के लिए, बग के इस टुकड़े को खोजने में मुझे 2 दिन लगे:

Windeployqt MinGW QTBUG-80763 के लिए काम नहीं करता है जो 5.14.1 में तय किया जाएगा

https://wiki.qt.io/Qt_5.14.0_Known_Issues

इसलिए जागरूक रहें। Windeployqt withMinGW का उपयोग करने से यहां बताई गई त्रुटि हो जाएगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.