Qt 5.1.1: Platform eklentisi "windows" eksik olduğundan uygulama başlatılamadı


124

Düzenleme: Bazı kişiler sorumu kopya olarak işaretlemeye başladı. Bunu sorduğumda birçok benzer sorunun olduğunu unutmayın (örneğin aşağıdaki listeye bakın). Ancak bu cevapların hiçbiri sorunumu çözmedi . Uzun bir aramadan sonra , tüm kullanıcılar tarafından eksik kütüphaneye işaret eden bir yorum buldum . Şimdi, aylar sonra, yorum bir yanıt olarak değiştirildi. Ancak, bu soruyu kendim yanıtladığımda, çözümü doğrudan sağlayarak diğer insanlara yardım etmeyi amaçladım. Bu unutulmamalı ve şu ana kadar cevabım birçok insana yardımcı oldu. Bu nedenle sorum kesinlikle bir kopya değil. Bu arada: En üstte verilen bağlantıda kabul edilen cevap sorunu çözmez !


Evet, aramayı kullandım:

Platform eklentisi "pencereleri" yüklenemedi. Mevcut platformlar şunlardır: Hata

Qt C ++ Uygulamasını Visual Studio qwindows.dll hatasından dağıtma

platform eklentisi "pencereleri" yüklenemedi Kullanılabilir platformlar: pencereler, minimum

Ancak benim durumumda sorun hala devam ediyor. Qt 5.1.1'i Visual Studio 2012 ile kullanıyorum ve Uygulamamı Windows 7'de Qt Creator 2.8.1 ile geliştiriyorum. Uygulama "Release" modunda derlenir ve doğrudan Qt Creator ile başlatılırsa çalıştırılabilir.

Ancak, "yayın" -Klasöründen başlarken aşağıdaki mesajı alıyorum:

Bu uygulama, Qt platformu eklentisi "pencerelerini" bulamadığından veya yükleyemediğinden başlatılamadı. Mevcut platform eklentileri şunlardır: minimal, ekran dışı, pencereler.

Klasör yapısı şuna benzer:

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

Platforms, örneğin qwindows.dll dahil olmak üzere Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platformlarından doğrudan kopyalanan klasördür. Diğer bazı kullanıcıların yaptığı gibi onu "platform" olarak yeniden adlandırmamın bir önemi yok. Qt hala "platform eklenti pencerelerini" bulamıyor, hatam nerede?


5
Benzer bir problemim vardı. Windows 8.1 Qt 5.3.1 MinGW 32, dinamik bağlantı. DLL dosyasını Qt klasöründen ../MyApp/platforms/qwindows.dll'ye kopyalayarak çözüldü. Not: Yolda "eklenti" dizini yok
Dmitriy


Benzer sorunlar için lütfen DependsDLL bağımlılıklarını ve bunlardan kaynaklanan sorunları gösteren aracı kullanın . Bu aracı bir exe veya dll dosyasının statik analizi için kullanabilirsiniz, ancak aynı zamanda dinamik olarak yüklenmiş DLL'lere sahip bir uygulamanın başlangıcını göstermek için de kullanabilirsiniz.
Flovdis

WindeployQt
CrippledTable

Yanıtlar:


64

Tamam, burada yayınlandığı gibi https://stackoverflow.com/a/17271172/1458552 diğer kullanıcılar tarafından fazla dikkat edilmeden:

LibEGL.dll eksikti! Uygulamayı başlatmaya çalışırken bu rapor edilmemiş olsa da (Qt5Gui.dll gibi diğer tüm * .dll dosyaları rapor edilmişti).


2
Benim durumumda: Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ bin (tabii ki Visual Studio sürümünüze bağlı olarak)
Anonim

8
kayıp dll'nin libEGL olduğunu nasıl anladınız?
kullanıcı1493046

4
BANA SAAT TASARRUF ETTİN! Aynı sorunu Qt 5.3.1'de
yaşadım

4
@ user1493046 Bunu bağımlı ve profil oluşturma modunu (F7) kullanarak yeniden oluşturmayı başardım . Uygulama başladıktan ve hatayı gösterdikten sonra, bağımlılıklar listesinde libEGL.dll belirdi.
lapis

17
LibEGL.dll eklemek işe yaramadı. Ancak, aşağıdaki ortam değişkenini ayarlamak benim için çalıştı: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ platformlar \
arsalank2

36

Exe konumumun yanında bir platformlar dizini oluşturdum ve içine qwindows.dll koydum, ancak yine de "Platform eklentisi yüklenemedi" pencereleri "aldım. Kullanılabilir platformlar: windows" hatası.

Qwindows.dll dosyasını C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ platformlardan kopyaladım, bu doğru konum değildi. Qt Creator'da çalıştırılan hata ayıklama günlüğüne baktım ve uygulamamın hata ayıklayıcıda çalıştırıldığında C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platformlarda göründüğünü gördüm.

C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platformlarından kopyaladığımda her şey yolunda gitti.


38
Aşağıdaki ortam değişkenini ayarlamak benim için çalıştı: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ platformlar \
arsalank2

24

Sürümde büyük olasılıkla bir kitaplık / eklenti eksik veya kitaplık yanlış dizinde ve / veya yanlış dizinde.

Qt amaçlanan cevap: Windeployqt kullanın . açıklama için son paragrafa bakınız

Manuel cevap:

Application.exe dosyanızla aynı dizinde "platformlar" adlı bir klasör oluşturun. Uygulamanızı yayınlamak için kullandığınız derleyicinin / bin dosyasında bulunan qwindows.dll dosyasını kopyalayıp "platformlar" klasörüne yapıştırın. Sihir gibi işe yarıyor. .Dll yoksa, eklentileri / platformları / (eklentilerle / bin / ile aynı dizinde) kontrol edin <- PfunnyGuy'un yorumu.

.Dll'nin yanlış derleyici kutusundan alınması yaygın bir sorun gibi görünüyor. Qwindows.dll dosyanızı, uygulamanızı yayınlamak için kullandığınız derleyiciden kopyaladığınızdan emin olun.

Qt, tüm bağımlılıkları (qwindows.dll ve libEGL.dll gibi) konuşlandırılmış yürütülebilir dosyanızın klasörüne ekleyecek platform konsolu uygulamalarıyla birlikte gelir. Bu, uygulamanızı dağıtmanın amaçlanan yoludur, böylece hiçbir kitaplığı kaçırmazsınız (tüm bu yanıtların ana sorunu budur). Windows uygulamasına windeployqt denir . Muhtemelen her işletim sistemi için bir dağıtım konsolu uygulaması vardır.


1
İhtiyacım olan şey buydu: Not, qwindows.dll, Qt platform kurulumunuzun bin / bölümünde değil, eklentiler / platformlarda /, eklentilerle / bin / ile aynı dizinde
PfunnyGuy

1
Teşekkür ederim! Özetle, dosyalar şu şekildedir: Ana dizinde Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll ve YourApp.exe ve alt dizinde platformlar \ qwindows.dll ve platformlar \ libEGL.dll.
Pierre

1
windeployqt doğru cevaptır. Kullandım ve .exe'nin yanında gereken her şeyi kopyaladı. Hangi dll'ye ihtiyaç olduğunu ve hangisinin olmadığını bilmekle ilgili varsayımları ortadan kaldırır
-Amri

14

Ortam QT_QPA_PLATFORM_PLUGIN_PATHdeğişkenini% QTDIR% \ eklentiler \ platformlar \ olarak ayarlamak benim için çalıştı .

Burada ve burada da bahsedildi .


3
Bu yanıt, mevcut makinenizde çalışmasını sağlayabilirken, programlarını diğer makinelere dağıtmaya çalışan ve hangi kitaplıkların eksik / gerekli olduğunu özel olarak belirlemesi gereken başkalarına yardımcı olmaz.
RTbecard

1
2017'de bu benim için çalıştı. Herhangi bir uygulamayı dağıtmayacağım! Qt oluşturucu ile sadece \ Yeni dosya veya proje ... \ Qt Widgets Uygulamasını Açın, ardından Çalıştırın ve aynı mesajla çöker. Bu varyantı ayarlamak bana yardımcı olur.
phiber

Sadece eklenti klasörünü doğaçlama "dağıtımınızın" yanında bir yere kopyalayın ve env değişkenini ona yönlendirin - çalışmalı ("QTDIR" kullanmaya gerek yok) :)
mlvljr

9

Bununla karşılaştım ve bulabildiğim cevapların hiçbiri benim için düzeltmedi.

Meslektaşımın makinesinde şu konumda Qt (5.6.0) kurulu: C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins
Aynı konuma Qt (5.6.2) yükledim.

Bu gönderiden öğrendim: http://www.tripleboot.org/?p=536 , Qt5Core.dll, Qt ilk yüklendiğinde kendisine yazılan eklentiler için bir konum bilgisi içeriyor. Meslektaşım ve benim Qt dizinlerim aynı olduğundan, ancak Qt'nin farklı sürümleri yüklendiğinden, farklı bir qwindows.dll dosyası gereklidir. Onun tarafından konuşlandırılan bir exe çalıştırdığımda,. \ Platformlar alt klasöründeki yürütülebilir dosyanın yanında bulunan dosya yerine C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins \ policies \ qwindows.dll dosyamı kullanacaktı.

Bunu aşmak için, uygulamaya Qt5Core.dll'deki yola bakmadan önce 'platformlar' alt klasörü için exe'nin yanına bakmaya zorlayan aşağıdaki kod satırını ekledim.

QCoreApplication::addLibraryPath(".");

QApplication çağrısından önce yukarıdaki satırı ana yönteme şu şekilde ekledim:

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

1
Bu benim için çalıştı ... ancak qwindowsd.dllhata ayıklama yapılarını meslektaşlarınızla paylaştığınız bir durumda olursanız, 'platformlar' dizinine ihtiyacınız olabileceğini unutmayın ...
HostileFork, SE

Bu benim için çalıştı çünkü qwindowsd.dll'den bahsedildiği için uygulamamın hata ayıklama modunda derlendiğinin farkındaydım ve Qtxxxd.dll kitaplıklarını yükledim ancak platform klasöründe qwindows.dll kullanıyordu.
Gustavo Rodríguez

6

dir oluşturmak platforms ve kopyalamak qwindows.dllkendisine, platformsve app.exeaynı dir bulunmaktadır

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

Klasör yapısı + app.exe + platforms\qwindows.dll


"Platformlar, Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platformlardan örneğin qwindows.dll dahil olmak üzere doğrudan kopyalanan klasördür."
parasietje

@parasietje uygulaması qwindows.dlldizinde arıyor platforms. Bunu gönderiyorum çünkü düzelttim. Olumsuz oy kullanmadan önce bir test mi yapıyorsunuz?
KunMing Xie

Cevabınız orijinal soruya cevap vermiyor. Cevabınız, orijinal gönderenin zaten denediği bir şeyi gösteriyor.
parasietje

3

Başka bir çözüm buldum. Uygulama klasöründe aşağıdaki gibi qt.conf oluşturun:

[Paths]
Prefix = .

Ve sonra eklentiler klasörünü uygulama klasörüne kopyalayın ve benim için çalışıyor.


Tamam, rüzgar dağıtım aracının uygulanmasının mümkün olmadığı bir minGW, CMake, Qt 5.12 ortamındayım. Platformlar klasörü oradaydı, ancak çalışmadı. Bunu Qt-lib'den biriyle değiştirmek de yardımcı olmadı. Numaranızı kullanarak düzeltildi (klasörü kopyaladıktan sonra). Teşekkür ederim!
Marcel Petrick

2

Bu cevapların çoğu iyi (doğru) bilgi içeriyor, ancak benim durumumda hala eksik bir şeyler vardı.

Uygulamam bir kütüphane (dll) olarak oluşturuldu ve Qt olmayan bir uygulama tarafından çağrıldı. Kullandığım windeployqt.exeyüklemek dizinde vb Qt dll'ler, platformlar, eklentileri kurmak için, ama yine de platformu bulamadık. Bazı deneylerden sonra, uygulamanın çalışma dizininin farklı bir klasöre ayarlandığını fark ettim. Bu yüzden, dll'nin "yaşadığı" GetModuleHandleExAdizini kullanarak yakaladım ve bu dizini çalışma zamanında Qt kitaplık yoluna ekledim.

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

Bu benim için çalıştı.


2

Benim için çözüm PATHdeğişkeni düzeltmekti . İlk yollardan biri Anaconda3 \ Library \ bin idi. Bu dizin bazı Qt kitaplıklarını içerir , ancak hepsini değil. Görünüşe göre bu bir sorun. C: \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin'i öne taşımak PATHbenim için sorunu çözdü.


1

QT 5.6, Anaconda 4.3.23, python 3.5.2 ve pyinstaller 3.3 kullanırken bu sorunu yaşadım. QTcreator kullanarak geliştirilmiş bir arayüze sahip bir python programı oluşturmuştum, ancak onu diğer bilgisayarlara dağıtmam gerekiyordu, bu nedenle pyinstaller kullanarak bir yürütülebilir program yapmam gerekiyordu.

Aşağıdaki ortam değişkenlerini ayarlarsam sorunun bilgisayarımda çözüldüğünü buldum:

QT_QPA_PLATFORM_PLUGIN_PATH:% QTDIR% \ plugins \ platformlar \

QTDIR: C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Kitaplık

Ancak bu çözüm, yalnızca bu klasörlerde conda ve qt'nin yüklü olduğu bilgisayarımda çalıştı.

Bunu çözmek ve yürütülebilir dosyanın herhangi bir bilgisayarda çalışmasını sağlamak için, ".spec" dosyasını (ilk olarak pyinstaller tarafından oluşturulan dosya) aşağıdaki satırı içerecek şekilde düzenlemem gerekti:

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

Bu çözüm Jim G. ve CrippledTable'ın yanıtlarına dayanmaktadır.


1

Ben de aynı sorunu yaşadım ve birkaç şeyi uygulayarak çözdüm. İlki, eğer Qt ile yaptığınız bir programsa.

"C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins" klasöründe (benim durumumda) başka klasörler buluyorsunuz, bunlardan biri "platformlar". Bu "platformlar" klasörü, yürütülebilir .exe dosyanızın yanına kopyalanacaktır. Şimdi, 0xc000007d hatasını alırsanız, 32 bit veya 64 olabileceği için eski sürümü kopyalamamışsınızdır.

Hatalarla devam ederseniz, daha fazla kitaplığın olmamasıdır. "Dependency Walker" programı ile bazı eksik klasörleri tespit edebilirsiniz. Şüphesiz size bir NVIDIA .dll'ye ihtiyacınız olduğunu gösterecek ve size konumu söyleyecektir.

Başka bir yol, "Bağımlılık Yürütücüsü" kullanmak yerine, tüm .dll'yi yürütülebilir dosyanızın yanındaki "C: \ Windows \ System32" klasörünüzden kopyalamaktır. .Exe dosyanızı çalıştırın ve her şey iyi yüklenirse, ihtiyacınız olmayan veya kullanmadığınız dll kitaplıklarında yer kaplamazsanız, tüm seçeneklerinizle .exe programını kullanın ve yaptığınız .exe dosyasını kapatmadan tüm. exe'nin yanına kopyaladığınız dll, yani bu .dll'ler programınız tarafından kullanılıyorsa, sistem silmenize izin vermez, yalnızca gerekli olmayanları kaldırır.

Umarım bu çözüm size hizmet eder.

İşletim sisteminiz 64 bit ise, kitaplıkların System32 klasöründe olacağını ve işletim sisteminiz 32 bit ise, bunların da System32 klasöründe olacağını unutmayın. Bu, 64 bit bir bilgisayarda 32 bit olan programlarla uyumluluk sorunu olmayacak şekilde gerçekleşir. SysWOW64 klasörü, yedek olarak 32 bit dosyaları içerir.


İşe yarıyor, ancak daha çok geçici bir çözüm gibi. Platformlar klasörünü kopyalamanıza gerek kalmaması için bir şeyler yapmanız mümkün mü?
Oleg Yablokov

0

Bir MinGW platformu için ve eğer bir hata ayıklama hedefini anlık olarak yazılmış bir CMakeLists.txt ile derliyorsanız, qwindows.dll dosyasını platform dizinine de eklemeniz gerekir. Windeployqt yürütülebilir dosyası işini iyi yapıyor, ancak CMake yapısının bazı garip nedenlerden dolayı sürüm değişkenine de ihtiyacı var gibi görünüyor. Özetle, platform dizininizde hem qwindows.dll hem de qwindowsd.dll'ye sahip olmak daha iyi olacaktır. CMake projesini QtCreator'a içe aktarırken ve ardından inşa prosedürünü çalıştırırken aynı garip sonucu fark etmedim. Komut satırında derleme CMake projesi, Hata Ayıklama hedefi için doğru olanı yerinde ayarlanmışsa (qwindowsd.dll) qwindows.dll bağımlılığını tetikliyor gibi görünüyor


0

Şu toplu iş dosyasını kullanın: 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
  • kullanmak için gui.exe dosyanızı sürükleyin ve explorer'daki RunWithQt.bat'a bırakın,
  • veya RunWithQt gui.exekomut satırından arayın

0

Anaconda yüklediyseniz onu kaldırmanızı ve kaynaktan python paketini yüklemeyi denemenizi tavsiye ederim, bu sorunu bu şekilde düzelttim


0

Uygulama qtbase / bin / windeployqt.exe Başvurunuz otomatik dağıtır. Envirenmentvariables doğru ayarlanmış bir istem başlatırsanız, mevcut dizine dağıtır. Bir komut dosyası örneği bulursunuz:

@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

Diyelim ki, taşınabilir CGAL-Demo'lara sahip olmak istediniz . Yani bir "CGAL" klasörünüz olacak ve içinde "lib" adında 1 alt klasör var: CGAL klasöründeki herhangi bir program için tüm (ortak) destek dll'leri buraya gidin. Örneğimizde, bu Dll-İndirme olacaktır : "lib" dizinine açmanız yeterlidir. Demolar sayfasında ne kadar aşağı kaydırırsanız , içerik o kadar etkileyici olur. Benim durumumda, çokyüzlü-demo doğru görünüyordu. Bu benim 10+ yo defterimde çalışıyorsa, etkilenirim. Bu yüzden "CGAL" dizininde "lib" ile birlikte bir "demo" klasörü oluşturdum. Şimdi bu klasörde bir .cmd dosyası oluşturun. Benimkine "Polyhedron.cmd" adını verdim. Yani şöyle bir dizin yapımız var:

 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.

Bu küçük örnekte, "Polyhedron.cmd" aşağıdaki metni içermektedir:

@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"

Açıkçası, son satır dışında tüm komut dosyaları aynı olabilir. Tek uyarı şudur: "DOS-Penceresi", asıl programı kullandığınız sürece açık kalır. Kabuk penceresini kapatın ve * .exe'yi de öldürün. "CGAL" klasörünü kopyaladığınız her yerde, tuhaf "% ~ dp0" -wriggle, başlattığımız * .cmd dosyasının tam yolunu temsil eder ve "\" ile başlar. Yani "% me% lib" her zaman gerçek kitaplığın tam yoludur (benim durumumda "CGAL \ lib"). Sonraki 2 satır, Qt'ye "çalışma zamanı" dosyalarının nerede olduğunu söyler. Bu, Windows-Qt programları için en azından "qwindows.dll" dosyası artı herhangi bir sayıda * .dll olacaktır. Doğru hatırlıyorsam, Dll kütüphanesinde (en azından indirdiğimde) küçük bir "bug" vardı, çünkü içinde qwindows.dll bulunan "platformlar" dizini bulunuyordu."eklentilere" taşıyın . Bir Qt uygulaması, herhangi bir Qt uygulaması "qwindows.dll" dosyasını bulamazsa, "pencereleri" bulamaz. Ve bunu, "eklentiler" dizinindeki "platformlar" adlı bir dizinde bekliyor, bu da işletim sistemi tarafından çalıştığını söylemesi gerekiyor ... ve "QT_PLUGIN_PATH" tam olarak tüm yardımcı dll'leri işaret etmiyorsa ihtiyaç duyulduğunda, bazı Qt programları hala prob olmadan çalışacaktır. Ve bazıları daha önce hiç duymadığınız * .dll dosyalarının eksikliğinden şikayet ediyor ...


0

QT sürüm 5.14.0'dan gelen herkes için, bu hata bildirimini bulmam 2 günümü aldı:

windeployqt MinGW QTBUG-80763 için çalışmıyor 5.14.1'de düzeltilecek

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

Bu yüzden farkında olun. Windeployqt'u MINGW ile kullanmak burada belirtilen aynı hatayı verecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.