2017-03-04 1 views
0

nicht gefunden oder geladen werden konnte. Ich habe eine Anwendung, die mit Qt5 (über PyQt) läuft. Ich benutze Miniconda und der Python-Code wurde cythonisiert. Der Code wurde auf meinem lokalen Computer eingerichtet, der Cython-Code, der aus den ursprünglichen .py Dateien und den relevanten Bibliotheken und Modulen in Miniconda erstellt wurde, sodass der Code erfolgreich ausgeführt wird. Dann versende ich alles auf eine andere Maschine, kompiliere den Cython-Code, um .so Dateien zu geben, und versuche, ihn auszuführen. An diesem Punkt habe ich den Fehler:Diese Anwendung konnte nicht gestartet werden, weil das Qt-Plattform-Plugin "xcb" in "

This application failed to start because it could not find or load the Qt platform plugin "xcb" 
in "". 

Reinstalling the application may fix this problem. 
Aborted (core dumped) 

Ich habe für eine lange Zeit sah sich nach möglichen Lösungen, und ich habe die folgende zusätzliche Informationen:

I ldd auf die verschiedenen .so Dateien überprüft haben. Alle scheinen die benötigten Bibliotheken zu finden.

Ich habe locate libqxcb.so versucht und diese zurück: ~/miniconda3/pkgs/qt-5.6.2-3/plugins/platforms/libqxcb.so & ~/miniconda3/plugins/platforms/libqxcb.so

auf den Vorschlägen Basierend here von TranslucentCloud, ich habe diese ~/miniconda3/bin/platforms (neu erstellt) in das Verzeichnis kopiert.

Ich habe auch export QT_DEBUG_PLUGINS=1 in das Skript aufgenommen, das meinen Code aufruft. Dies ergibt die folgende Ausgabe:

QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platforms" ... 
QFactoryLoader::QFactoryLoader() looking at "~/miniconda3/bin/platforms/libqxcb.so" 
Found metadata in lib ~/miniconda3/bin/platforms/libqxcb.so, metadata= 
{ 
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3", 
    "MetaData": { 
     "Keys": [ 
      "xcb" 
     ] 
    }, 
    "className": "QXcbIntegrationPlugin", 
    "debug": false, 
    "version": 329218 
} 


Got keys from plugin meta data ("xcb") 
loaded library "~/miniconda3/bin/platforms/libqxcb.so" 
xkbcommon: ERROR: failed to add default include path ~/Programmes/miniconda3/lib 
Qt: Failed to create XKB context! 
Use QT_XKB_CONFIG_ROOT environmental variable to provide an additional search path, add ':' as separator to provide several search paths and/or make sure that XKB configuration data directory contains recent enough contents, to update please see http://cgit.freedesktop.org/xkeyboard-config/ . 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/xcbglintegrations" ... 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platformthemes" ... 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/platforminputcontexts" ... 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/styles" ... 
Fontconfig error: Cannot load default config file 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/accessible" ... 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/accessiblebridge" ... 
QXcbConnection: XCB error: 145 (Unknown), sequence: 165, resource id: 0, major code: 139 (Unknown), minor code: 20 
QFactoryLoader::QFactoryLoader() checking directory path "~/miniconda3/bin/imageformats" ... 
QLibraryPrivate::unload succeeded on "~/miniconda3/bin/platforms/libqxcb.so" 

Die GUI jetzt lädt und Schaltflächen usw. funktionieren. Es gibt jedoch noch ein paar Probleme - das kleinere Problem ist, dass sich alle Zeichensätze von meinem lokalen Computer unterscheiden (kein großes Problem, aber vermutlich ein Hinweis darauf, dass es immer noch einige relevante Bibliotheken nicht findet).

Im Ernst, die GUI reagiert nicht auf Tastendrücke - die GUI hat viele Textfelder zu füllen, so dass es unbrauchbar macht.

Es gibt eindeutig einige Fehler in der Ausgabe oben, aber es ist nicht klar, welche Bibliotheken usw. es immer noch nicht finden kann (oder warum dies der Fall ist).

+0

Ich hatte das gleiche Problem mit Qt C++. In der Qt-Installation (auf Ihrem Computer, wo Sie entwickeln) gibt es einen Ordner namens "Plugins". Sie sollten diesen Ordner an derselben Stelle wie Ihre Anwendung kopieren und das Problem lösen. – basslo

Antwort

2

Einige Schritte waren notwendig, um die Fehler, die oben zu beheben:

This application failed to start because it could not find or load the Qt platform plugin "xcb" 
in "". 

Reinstalling the application may fix this problem. 
Aborted (core dumped) 

dies durch ~/miniconda3/plugins/platforms zu ~/miniconda3/bin Kopieren aufgelöst werden können.

Zusätzlich in dem Bash-Skript, das die Qt GUI startet habe ich die folgenden Zeilen hinzugefügt, ansonsten die gesamten Text in der GUI erscheint in Courier:

export FONTCONFIG_FILE=/etc/fonts/fonts.conf 
export FONTCONFIG_PATH=/etc/fonts/ 

Schließlich habe ich auch die folgende Zeile benötigte Drücken von Tasten zu ermöglichen, die von der GUI registriert werden:

export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb 

Key dies zur Lösung war die Linie: export QT_DEBUG_PLUGINS=1, die es mir ermöglicht, zu sehen, wo Qt wurde zu brechen.

Verwandte Themen