Probleme de deploiement logiciel C++

Ma premiere compilation sous Windows

a marqué ce sujet comme résolu.

Bonjour a tous,

Aujourd’hui j’ai deux petits problemes de debutant ou j’aurais besoin de votre aide. Le tout ce passe sur un petit logiciel ecrit en C++ avec QT5 que j’ai fait pour me faire la main et qui est disponible sur un repository Github


Premier probleme

Je dispose de deux chemins relatifs vers des fichiers (un catalogue de produit et un fichier de sauvegarde):

  • commandform.cpp line 25
  • sale.cpp line 42

Lorsque je suis sous Linux j’arrive a faire des chemins relatifs en mettant par exemple pour le premier ../TicketSale/catalogue.csv. Cependant sous Windows cela ne fonctionne pas et je n’arrive pas a trouver comment faire un chemin relatif sous Windows..

Comment faire un chemin relatif en C++ sous Windows

PS: Oui j’ai chercher sur internet, oui j’ai trouve plein de chose, mais rien que je ne suis arriver a faire fonctionner


Second probleme

  • J’ai compris que QT m’oblige a fournir un certains nombre de DLL avec mon .exe.
  • J’ai compris que je peux trouver ces DLL sur mon ordinateur et juste les ajouter a cote de mon .exe
  • J’ai compris qu’il fallais mettre la compilation en release et prendre donc les bonnes DLL en fonction des message d’erreur

Pourtant j’ai un probleme lorsque j’arrive sur la derniere DLL (libgcc_s_dw2-1.dll). D’un coup je recois ce message d’erreur :

1
Le point d'entree de procedure _ZNKSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE4findEcj est introuvable dans la bibliotheque de liens dynamiques C:\[long path dans fichier user]\TicketSale\build-TicketSale-Desktop_Qt_5_8_0_MinGW_32bit-Release\release\TicketSale.exe

A quoi correspond ce message d’erreur ? Comment puis-je le resoudre ?


J’espere que vous pourrez me sauver de ces deux erreurs qui paraissent plutot debutante. J’aimerai beaucoup pouvoir regarder plus loin et maitriser un peu tout cela.

Merci!

+0 -0

Salut.

Premier problème:

Les chemins relatifs sous Windows fonctionnent exactement comme sous Linux. La différence entre les deux est le séparateur de dossiers qui, sous Windows, est un anti-slash à la place d’un simple slash. Et comme l’anti-slash sert aussi à spécifier des caractères spéciaux dans une chaine de caractères, il faut les doubler. Ton chemin deviendrait donc : ..\\TicketSale\\catalogue.csv Une autre source d’erreur peut venir de l’emplacement depuis lequel est exécuté ton application : tu devrais peut-être essayer de reconstruire complètement le chemin en récupérant par exemple le dossier de l’exécutable et en ajoutant le chemin relatif vers ton fichier csv (ce n’est qu’une piste de recherche…)

Deuxième problème:

Je pense que tu dois avoir plusieurs installations de MinGW, ou alors une ancienne dll qui traîne dans un dossier système. Essaye de récupérer celle qui doit se trouver dans le sous-dossier de ton installation de MinGW utilisée pour la compilation : l’erreur devrait disparaître.

@+ Xav’

Pour le premier probleme, les / fonctionnent aussi sur Windows.

Testes l’existance ton fichier (donc que le chemin est correcte) avec QFileInfo::exists. Et affiches le chemin absolu déduit par Qt a partir du chemin relatif que tu donnes avec QFileInfo::absoluteFilePath()

Pour le second probleme, il faut plus de détails sur ce que tu fais exactement. A lire peut etre : http://guillaume.belz.free.fr/doku.php?id=deployer_une_application_qt (essaies windeployqt)

+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte