mardi 23 octobre 2018

C'est quoi QML en Qt/C++ ?

C'est un langage de description d'interface graphique permettant aux objets décrits dans le QML d'être d'une part affichés dans l'UI et d'autre part d'interagir avec le Code C++ de Qt ou un autre langage comme Python.

Développement Qt/C++

Si vous utilisez Qt Creator la création du projet doit se faire avec l'option "Qt Quick Controls Application". Bon voilà, c'est à peu prêt tout, d'aucuns diront que c'est vraiment différent des projets "standards" mais il n'y a rien de bien sorcier là dedans.

QML est un peu l'équivalent du XAML en C#.NET.

Créer une extension de QML en Qt/C++

Rien de plus facile à la page Suivante : Qt Writing Extensions with C++
Il s'agit de créer une Class qui dérive d'un objet QML de base. C'est vraiment la force de QML c'est l'équivalent des UserControls en C# c'est à dire des .ASCX.

Il y a une partie description graphique de l'objet et une partie Code qui permet de coder le comportement du contrôle utilisateur. C'est ce que l'on trouve de puis puissant.

QML est dit aussi Qt Quick dans la littérature QML.

Voilà, on ira plus loin la prochaine fois !

vendredi 5 octobre 2018

Erreur LNK2019 - Error LNK2019 - symbole externe non résolu __except_handler4_common

Une des difficultés de la coexistence du langage C et du langage C++ ce sont les conventions de nommages du LINKER et cette error LNK2019 en est la conséquence. Pour trouver la solution c'est un peu la catastrophe :

Erreur des outils Éditeur de liens LNK2019

Et alors après avoir fait tout ça, je me retrouve avec l'erreur suivante :

Gravité Code Description Projet Fichier Ligne État de la suppression
Erreur LNK2019 symbole externe non résolu __except_handler4_common référencé dans la fonction __except_handler4 MFCStarterKit D:\Mabyre\Visual Studio\CPlusPlus\MFCStarterKit4.1\MFCStarterKit\MFCStarterKit\MSVCRTD.lib(_chandler4gs_.obj) 1

Merci ! Heureusement qu'il y des âmes charitables, la solution se trouvait ici :

https://stackoverrun.com/fr/q/8776145

malheureusement stackoverrun a disparu, lien cassé, pas grave, j'ai noté tout ça ici ...

Dans votre projet de bibliothèque, consultez : 

Propriétés -> C/C++ -> Génération de code -> Runtime Library :

Il y a des chances qu'il soit réglé sur :

DLL multithread de débogage (/ MDd)

Changez cette option et mettez la à :

multithread Debug (/ MTd)

et à la reconstruction, l'erreur aura disparue !

stackoverrun à disparu !

L'original de cet article dans :

Unresolved external symbol __except_handler4_common" in Visual Studio 2015

Franchement : 

/MDd à la place de /MTD cela ne me serait pas venu à l'idée ...

Conseil pour ajouter une librairie à votre projet

Lorsque vous suivez les directives de la page suivante :

https://www.developpez.net/forums/d740287/c-cpp/outils-c-cpp/visual-cpp/visual-cpp-ajout-d-bibliotheque/

pour ajouter une librairie à votre projet. 

N'oubliez pas que vous pouvez mettre les chemins d'accès aux .lib .dll et autres en "relatif", si vous utilisez l'outil de recherche pour aller chercher les objets, il mettra le chemin en "absolu" et vous aurez alors des problèmes si vous renommez ou déplacez tout ou partie de votre projet.

Tous ces soucis ont été corrigés avec Visual Studio C#.NET, c'est curieux que cela ne le soit pas pour Visual C++ ...

Have fun!