Edit: Beberapa orang mulai menandai pertanyaan saya sebagai duplikat. Jangan lupa bahwa banyak pertanyaan serupa muncul ketika saya menanyakan yang satu ini (lihat misalnya daftar di bawah). Namun, tidak satu pun dari jawaban ini yang menyelesaikan masalah saya . Setelah pencarian yang lama saya menemukan komentar yang telah diabaikan oleh semua pengguna yang menunjuk ke lib yang hilang. Sekarang, beberapa bulan kemudian, komentar tersebut telah diubah menjadi sebuah jawaban. Namun, ketika saya menjawab pertanyaan ini oleh diri saya sendiri, saya bermaksud membantu orang lain dengan memberikan solusi secara langsung. Ini tidak boleh dilupakan dan sejauh ini jawaban saya membantu banyak orang. Oleh karena itu pertanyaan saya jelas bukan duplikat. Ngomong-ngomong: Jawaban yang diterima dalam tautan yang disediakan di atas tidak menyelesaikan masalah !
Ya, saya menggunakan pencarian:
Gagal memuat plugin platform "windows". Platform yang tersedia adalah: Error
Menyebarkan aplikasi Qt C ++ dari Visual Studio qwindows.dll galat
gagal memuat plugin platform "windows" Platform yang tersedia adalah: windows, minimal
Namun, dalam kasus saya masalahnya masih berlanjut. Saya menggunakan Qt 5.1.1 dengan Visual Studio 2012 dan mengembangkan Aplikasi saya di Windows 7 dengan Qt Creator 2.8.1. Aplikasi dikompilasi dalam mode "Rilis" dan dapat dijalankan jika langsung dimulai dengan Qt Creator.
Namun, ketika memulai dari "rilis" -Folder, saya mendapatkan pesan berikut:
Aplikasi ini gagal dijalankan karena tidak dapat menemukan atau memuat plugin platform Qt "windows". Plugin platform yang tersedia adalah: minimal, di luar layar, windows.
Struktur folder terlihat seperti ini:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Platforms adalah folder yang langsung disalin dari Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ platforms termasuk misalnya qwindows.dll. Tidak masalah jika saya mengganti namanya menjadi "platform" seperti yang dilakukan beberapa pengguna lain. Qt masih belum menemukan "platform plugin windows", dimana kesalahan saya?
sumber
Depends
, yang akan menunjukkan ketergantungan DLL dan masalah yang diakibatkannya. Anda dapat menggunakan alat ini untuk analisis statis dari file exe atau dll, tetapi juga menggunakannya untuk menunjukkan startup aplikasi dengan DLL yang dimuat secara dinamis.Jawaban:
Oke, seperti yang diposting di sini https://stackoverflow.com/a/17271172/1458552 tanpa banyak perhatian oleh pengguna lain:
The libEGL.dll hilang! Meskipun ini belum dilaporkan saat mencoba memulai aplikasi (semua * .dll lain seperti Qt5Gui.dll telah dilaporkan).
sumber
Saya membuat direktori platform di sebelah lokasi exe saya dan meletakkan qwindows.dll di dalamnya, tetapi saya masih menerima pesan "Gagal memuat plugin platform". Platform yang tersedia adalah: jendela "kesalahan.
Saya telah menyalin qwindows.dll dari C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ platforms, yang bukan lokasi yang tepat. Saya melihat log debug saat berjalan di Qt Creator dan menemukan bahwa aplikasi saya sedang mencari di C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platform saat berjalan di debugger.
Ketika saya menyalin dari C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ platforms, semuanya bekerja dengan baik.
sumber
Rilis mungkin tidak memiliki pustaka / plugin atau pustaka berada di direktori yang salah dan atau dari direktori yang salah.
Jawaban yang dimaksudkan Qt: Gunakan windeployqt . lihat paragraf terakhir untuk penjelasan
Jawaban manual:
Buat folder bernama "platform" di direktori yang sama dengan file application.exe Anda. Salin dan tempel qwindows.dll, yang ada di / bin kompiler mana pun yang Anda gunakan untuk merilis aplikasi, ke folder "platform". Seperti sihir, itu berhasil. Jika .dll tidak ada, periksa plugin / platforms / (dengan plugin / berada di direktori yang sama dengan bin /) <- komentar PfunnyGuy.
Sepertinya masalah yang umum terjadi adalah .dll diambil dari kompiler bin yang salah. Pastikan untuk menyalin qwindows.dll Anda dari kompiler yang sama seperti yang digunakan untuk merilis aplikasi Anda.
Qt hadir dengan aplikasi konsol platform yang akan menambahkan semua dependensi (termasuk yang seperti qwindows.dll dan libEGL.dll) ke dalam folder executable yang Anda terapkan. Ini adalah cara yang dimaksudkan untuk menerapkan aplikasi Anda, sehingga Anda tidak melewatkan perpustakaan apa pun (yang merupakan masalah utama dengan semua jawaban ini). Aplikasi untuk windows disebut windeployqt . Kemungkinan ada aplikasi konsol penerapan untuk setiap OS.
sumber
Menyetel
QT_QPA_PLATFORM_PLUGIN_PATH
variabel lingkungan ke% QTDIR% \ plugins \ platforms \ berhasil untuk saya .Itu juga disebutkan di sini dan di sini .
sumber
Saya mengalami ini dan tidak ada jawaban yang dapat saya temukan memperbaikinya untuk saya.
Kolega saya menginstal Qt (5.6.0) pada mesinnya di: C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins
Saya memiliki Qt (5.6.2) yang diinstal di lokasi yang sama.
Saya belajar dari posting ini: http://www.tripleboot.org/?p=536 , bahwa Qt5Core.dll memiliki lokasi ke plugin yang ditulis ketika Qt pertama kali diinstal. Karena kolega dan direktori Qt saya sama, tetapi versi Qt yang berbeda diinstal, file qwindows.dll yang berbeda diperlukan. Ketika saya menjalankan exe yang digunakan olehnya, itu akan menggunakan file C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins \ platforms \ qwindows.dll saya alih-alih yang terletak di sebelah file yang dapat dieksekusi di subfolder. \ Platforms.
Untuk menyiasati ini, saya menambahkan baris kode berikut ke aplikasi yang tampaknya memaksanya untuk melihat di sebelah exe untuk subfolder 'platform' sebelum melihat jalur di Qt5Core.dll.
Saya menambahkan baris di atas ke metode utama sebelum panggilan QApplication seperti ini:
sumber
qwindowsd.dll
di direktori `platforms` jika Anda kebetulan berada dalam situasi seperti Anda berbagi build debug dengan kolega Anda ...buat dir
platforms
dan salinqwindows.dll
ke sana,platforms
danapp.exe
berada di direktori yang samacd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll
Struktur folder
+ app.exe + platforms\qwindows.dll
sumber
qwindows.dll
di direktoriplatforms
. Saya memposting ini karena saya telah memperbaikinya. Apakah Anda melakukan tes sebelum memberi suara negatif?Saya menemukan solusi lain. Buat qt.conf di folder app seperti:
Dan kemudian salin folder plugin ke dalam folder aplikasi dan itu berfungsi untuk saya.
sumber
Sebagian besar jawaban ini berisi info yang baik (benar), tetapi dalam kasus saya, masih ada yang kurang.
Aplikasi saya dibuat sebagai perpustakaan (dll) dan dipanggil oleh aplikasi non-Qt. Saya biasa
windeployqt.exe
mengatur dll Qt, platform, plugin, dll. Di direktori instal, tetapi masih tidak dapat menemukan platformnya. Setelah beberapa percobaan, saya menyadari direktori kerja aplikasi diatur ke folder yang berbeda. Jadi, saya mengambil direktori di mana dll "hidup" menggunakanGetModuleHandleExA
dan menambahkan direktori itu ke jalur perpustakaan Qt saat runtime menggunakanIni berhasil untuk saya.
sumber
Bagi saya solusinya adalah mengoreksi
PATH
variabel. Itu memiliki Anaconda3 \ Library \ bin sebagai salah satu jalur pertama. Direktori ini berisi beberapa pustaka Qt, tetapi tidak semua. Ternyata, itu masalahnya. Memindahkan C: \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin ke depanPATH
memecahkan masalah bagi saya.sumber
Saya mengalami masalah ini saat menggunakan QT 5.6, Anaconda 4.3.23, python 3.5.2 dan pyinstaller 3.3. Saya telah membuat program python dengan antarmuka yang dikembangkan menggunakan QTcreator, tetapi harus menyebarkannya ke komputer lain, oleh karena itu saya perlu membuat yang dapat dieksekusi, menggunakan pyinstaller.
Saya telah menemukan bahwa masalah telah diselesaikan di komputer saya jika saya menetapkan variabel lingkungan berikut:
Tetapi solusi ini hanya berfungsi pada PC saya yang memiliki conda dan qt diinstal di folder tersebut.
Untuk mengatasi ini dan membuat pekerjaan yang dapat dieksekusi di komputer mana pun, saya harus mengedit ".spec" (file pertama kali dibuat oleh pyinstaller) untuk menyertakan baris berikut:
Solusi ini didasarkan pada jawaban Jim G. dan CrippledTable
sumber
Saya memiliki masalah yang sama dan menyelesaikannya dengan menerapkan beberapa hal. Yang pertama, jika itu adalah program yang Anda lakukan dengan Qt.
Di folder (dalam kasus saya) "C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins" Anda menemukan folder lain, salah satunya adalah "platform". Folder "platform" itu akan disalin di sebelah file .exe Anda. Sekarang, jika Anda mendapatkan kesalahan 0xc000007d adalah Anda tidak menyalin versi yang dulu, karena bisa 32bits atau 64.
Jika Anda melanjutkan kesalahan adalah Anda kekurangan lebih banyak perpustakaan. Dengan program "Dependency Walker" Anda dapat mendeteksi beberapa folder yang hilang. Tentunya ini akan menunjukkan kepada Anda bahwa Anda memerlukan NVIDIA .dll, dan ini memberi tahu Anda lokasinya.
Cara lain, daripada menggunakan "Dependency Walker" adalah dengan menyalin semua .dll dari folder "C: \ Windows \ System32" di samping file yang dapat dieksekusi. Jalankan .exe Anda dan jika semuanya dimuat dengan baik, sehingga Anda tidak memiliki ruang yang ditempati di pustaka dll yang tidak Anda perlukan atau gunakan, gunakan program .exe dengan semua opsi Anda dan tanpa menutup .exe yang Anda lakukan adalah menghapus semua file. dll yang baru saja Anda salin di sebelah .exe, jadi jika .dll tersebut digunakan oleh program Anda, sistem tidak akan membiarkan Anda menghapusnya, hanya menghapus yang tidak diperlukan.
Saya harap solusi ini membantu Anda.
Ingatlah bahwa jika sistem operasi Anda 64 bit, pustaka akan berada di folder System32, dan jika sistem operasi Anda 32 bit, mereka juga akan berada di folder System32. Ini terjadi agar tidak ada masalah kompatibilitas dengan program yang 32 bit di komputer 64-bit. Folder SysWOW64 berisi file 32-bit sebagai cadangan.
sumber
Untuk platform MinGW dan jika Anda mengompilasi target Debug dengan CMakeLists.txt buatan tangan yang ditulis secara ad hoc, Anda juga perlu menambahkan qwindows.dll ke direktori platform. Windeployqt yang dapat dieksekusi bekerja dengan baik tetapi tampaknya untuk beberapa alasan aneh build CMake membutuhkan varian rilis juga. Singkatnya, akan lebih baik untuk memiliki qwindows.dll dan qwindowsd.dll di direktori platform Anda. Saya tidak melihat hasil aneh yang sama saat mengimpor proyek CMake di QtCreator dan kemudian menjalankan prosedur build. Mengompilasi pada baris perintah, proyek CMake tampaknya memicu ketergantungan qwindows.dll baik jika target Debug yang benar telah ditetapkan (qwindowsd.dll)
sumber
Gunakan file batch ini: RunWithQt.bat
RunWithQt gui.exe
dari baris perintahsumber
Jika Anda telah menginstal Anaconda, saya sarankan Anda untuk menghapusnya dan mencoba menginstal paket python dari sumber, saya memperbaiki masalah ini dengan cara ini
sumber
Aplikasi qtbase / bin / windeployqt.exe menyebarkan aplikasi Anda secara otomatis. Jika Anda memulai prompt dengan envirenmentvariables yang disetel dengan benar, perintah tersebut akan diterapkan ke direktori saat ini. Anda menemukan contoh skrip:
sumber
Katakanlah, Anda ingin memiliki portabel CGAL-Demo . Jadi Anda akan memiliki folder "CGAL", dan di dalamnya, 1 subfolder bernama "lib": semua (umum) support-dll untuk program apa pun di folder CGAL, buka di sini. Dalam contoh kami, ini akan menjadi Dll-Download : cukup unzip ke direktori "lib". Semakin jauh Anda menggulir ke bawah pada halaman demo , semakin mengesankan kontennya. Dalam kasus saya, demo-polihedron sepertinya benar. Jika ini berjalan di notebook 10+ tahun saya, saya terkesan. Jadi saya membuat folder "demo" di direktori "CGAL", di samping "lib". Sekarang buat file .cmd di folder itu. Saya menamai milik saya "Polyhedron.cmd". Jadi kami memiliki struktur direktori seperti ini:
Dalam contoh kecil ini, "Polyhedron.cmd" berisi teks berikut:
Semua skrip bisa sama selain baris terakhir, tentunya. Satu-satunya peringatan adalah: "DOS-Window" tetap terbuka selama Anda menggunakan program yang sebenarnya. Tutup jendela shell, dan Anda juga mematikan * .exe. Kapan pun Anda menyalin folder "CGAL", karena "% ~ dp0" -wriggle yang aneh mewakili jalur lengkap ke file * .cmd yang kita mulai, dengan tanda "\". Jadi "% me% lib" selalu merupakan jalur lengkap ke perpustakaan sebenarnya ("CGAL \ lib" dalam kasus saya). 2 baris berikutnya memberitahu Qt dimana file "runtime" nya berada. Ini akan menjadi setidaknya file "qwindows.dll" untuk program Windows-Qt ditambah sejumlah * .dlls. Jika saya ingat benar, Dll-library (setidaknya saat saya mendownloadnya) memiliki sedikit "bug" karena berisi "platforms" -directory dengan qwindows.dll di dalamnya.pindah ke "plugin". Jika aplikasi Qt, aplikasi Qt apa pun , tidak menemukan "qwindows.dll", ia tidak dapat menemukan "windows". Dan ia mengharapkannya di direktori bernama "platform" di direktori "plugin", yang harus diberitahukan oleh OS tempat menjalankannya ... dan jika "QT_PLUGIN_PATH" tidak benar-benar mengarah ke semua helper-dll Anda perlu, beberapa program Qt masih akan berjalan tanpa masalah. Dan beberapa mengeluh tentang kehilangan * .dll yang belum pernah Anda dengar ...
sumber
Bagi siapa pun yang datang dari QT versi 5.14.0, saya butuh 2 hari untuk menemukan pernyataan bug ini:
https://wiki.qt.io/Qt_5.14.0_Known_Issues
Jadi waspadalah. Menggunakan windeployqt withMinGW akan memberikan kesalahan yang sama yang disebutkan di sini.
sumber