Bonjour,

Je suis sur Ubuntu 11 et utilise QT4.7.3 avec QTCreator 2.2.1.
Dans une application multi-thread utilisant une classe héritant de QThread, et affichant des fenêtres OpenCV, j'obtiens parfois cette erreur qui interrompt mon programme :

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
Après quelques recherches, il semblerait que lorsque des threads sont susceptibles d'utiliser des éléments de XLib, il faille appeler avant toute création de thread, XInitthread();

J'ai donc ajouté ceci à mon programme dans le main :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
...
#include <X11/Xlib.h>
...
 
 
/** @function main */
int main( int argc, const char** argv )
{
 
    XInitThreads();
 
    // Do something
 
    return  0;
}
Or, ce nouvel include me provoque une bonne cinquantaine d'erreurs de ce type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
/usr/include/qt4/QtCore/qtextstream.h:60: error: #error qtextstream.h must be included before any header file that defines Status
/usr/include/opencv2/flann/dist.h:82: error: expected unqualified-id before numeric constant
Après d'autres recherces, il semblerait que le souci apparaisse à cause des classes True et False dans dist.h, qui seraient en conflit avec d'autres classes du même nom quelque part.

Dans dist.h il y a :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class True
{
};
 
class False
{
};
Et à partir de là je ne sais plus comment faire pour régler ce problème, qui semble être récurrent sous Ubuntu 11.

Avez-vous quelques idées ?

Merci d'avance et bonne journée