Bonjour à tous,


ayant perdu pas mal de temps à essayer de résoudre ce problème, je post la description de mon problème avec la solution en espérant pouvoir être utile à d'autres (j'ai fouillé les forums et aucuns ne m'a donné cette solution)


Le but est donc de faire tourner une application Qt sur un scanner de code barre MC3090
Windows CE 5.0
Intel, PXA270 (xscale) ---> ARM

J'ai suivit entre autres, ce liens ci :
Je résume les différentes étapes que j'ai effectué (j utilise VS2008):
  • Installer Windows CE 5 Standard SDK
  • Télécharger les sources : 4.6.2
  • Extraire vers "C:\Qt\4.6.2-wince"
  • Lancer une console VS2008
  • Mettre "C:\Qt\4.6.2-wince\bin" dans le PATH
  • Configurer la compilation : (-fast pour ne pas compiler les examples)
    configure -platform win32-msvc2008 -xplatform wince50standard-armv4i-msvc2008 -fast
  • Utiliser les sript pour mettre à jour PATH, LIB et INCLUDE :
    setcepaths wince50standard-armv4i-msvc2008
  • Compiler les source :
    nmake


Tout s'est passé sans problème, aucune erreur jusque là :

Je peux aussi aller dans le répertoire d'un example et générer le .vcproj pour VS2008 :
cd examples\widgets\calendarwidget
qmake -tp vc
Je l'ouvre et je compile sans soucis le projet à partir de VS2008 et vers la platforme ARMV4I. L'exécutable obtenu n'est, bien sûre, pas exécutable sur ma machine :
ERROR : 'appname' n'est pas une application Win32 valide.
Je me disais déjà : "Nickel, tout fonctionne correctement, c'est quand même terrible Qt !"
Mais j'avais tord ...

Problème :
En prenant l'exécutable ainsi obtenu
+ ses dll
C:\Qt\4.6.2-wince\lib\QtCore4.dll
C:\Qt\4.6.2-wince\lib\QtGui4.dll
C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\dll\armv4i\msvcr90.dll
et en les copiant sur le scanner et en l'exécutant, j'ai droit à un beau message d'erreur :
'appname' is not a valid Windows CE application.
Solution
Comme le précise la fin de la page Windows CE - Working with Custom SDKs
In our experience, when Qt applications do not start on Windows CE, it is usually the result of missing symbols for the following classes or features:
  • Drag and Drop
  • QClipboard
  • QCursor
Il se pourrait donc que l'application ne démarre pas à cause d'une fonctionnalité qui ne serrait pas prise en charge par le SDK que j'utilise... Je vais donc désactiver ces trois là !

J'ai donc modifié la commande pour configurer la compilation de Qt et j'ai ajouté ceci :
-D QT_NO_CLIPBOARD -D QT_NO_CURSOR -D QT_NO_DRAGANDDROP
Résultat :
configure -platform win32-msvc2008 -xplatform wince50standard-armv4i-msvc2008 -fast -D QT_NO_CLIPBOARD -D QT_NO_CURSOR -D QT_NO_DRAGANDDROP
Il faut donc recommencer depuis le début (extraire les sources, configurer, compiler)
Et ça a fonctionné !!
Il ne me reste plus qu'a tester en désactivant une à une les fonctionnalités pour savoir laquelle pose problème !



Si vous avez des informations complémentaires ou des remarques à me faire n'hésitez pas, je suis preneur !