Partage
  • Partager sur Facebook
  • Partager sur Twitter

Questions de débutant

Sujet résolu
    1 avril 2021 à 13:03:55

    Bonjour,

    J’ai récemment voulu apprendre le C++ et je me suis lancé dans un petit projet d’apprentissage avec Qt.

    Mon programme s’exécute correctement lorsque je le compile et que je le lance dans QtCreator. Mais lorsque je le lance via l’exécutable généré, j’ai l’erreur suivante qui apparaît (j’ai bien importé les DLL demandées) :

    - Sur mon PC de développement :

                                     

    - Sur une VM : 

                             

    Savez-vous d’où ce problème peut venir ?

    Deuxième question : Certains programmes que l’on trouve sur le web n’ont pas besoin de DLLs pour fonctionner (ex : Rufus qui n’est qu’un fichier en .exe). Comment cela est possible ? Puis-je, moi aussi, créer un logiciel composé uniquement d’un .exe ?

    Merci pour vos réponses.

    -
    Edité par ThéoRamousse 1 avril 2021 à 13:08:04

    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2021 à 13:24:42

      ThéoRamousse a écrit:

      Deuxième question : Certains programmes que l’on trouve sur le web n’ont pas besoin de DLLs pour fonctionner (ex : Rufus qui n’est qu’un fichier en .exe). Comment cela est possible ? Puis-je, moi aussi, créer un logiciel composé uniquement d’un .exe ?

      Je vais répondre à la deuxième question : C'est possible en utilisant seulement les fonctions du système, comme tu parles de Windows sous Windows 2 solution : soit tu fais un programme avec les api du système Win32 ça c'est l'ancienne méthode. Actuellement les nouvelles version de Windows ont le framework .NET d'installée depuis un moment déjà donc tu fais une application de ce type.
      • Partager sur Facebook
      • Partager sur Twitter
        1 avril 2021 à 13:27:34

        rouloude a écrit:

        ThéoRamousse a écrit:

        Deuxième question : Certains programmes que l’on trouve sur le web n’ont pas besoin de DLLs pour fonctionner (ex : Rufus qui n’est qu’un fichier en .exe). Comment cela est possible ? Puis-je, moi aussi, créer un logiciel composé uniquement d’un .exe ?

        Je vais répondre à la deuxième question : C'est possible en utilisant seulement les fonctions du système, comme tu parles de Windows sous Windows 2 solution : soit tu fais un programme avec les api du système Win32 ça c'est l'ancienne méthode. Actuellement les nouvelles version de Windows ont le framework .NET d'installée depuis un moment déjà donc tu fais une application de ce type.


        Merci pour ta réponse, c'est ce que je voulais savoir. :)
        • Partager sur Facebook
        • Partager sur Twitter
          1 avril 2021 à 15:45:28

          Salut,

          rouloude a écrit:

          Je vais répondre à la deuxième question : C'est possible en utilisant seulement les fonctions du système, comme tu parles de Windows sous Windows 2 solution : soit tu fais un programme avec les api du système Win32 ça c'est l'ancienne méthode. Actuellement les nouvelles version de Windows ont le framework .NET d'installée depuis un moment déjà donc tu fais une application de ce type.

          oui, mais pas seulement.

          Pour faire "simple", si tu veux que ton programme puisse ne fonctionner qu'avec un seul fichier .exe (et rien d'autre), ce qu'il faut avant tout, c'est utiliser la notion de bibliothèque statique.

          Une bibliothèque statique est en réalité une archive dans laquelle on va trouver le code binaire exécutable de l'ensemble des fonctionnalités proposées et dans laquelle l'éditeur de liens ira "piocher" chacune des fonctionnalités qui sont utilisées par le programme afin, justement, de les ajouter au fichier exécutable final (j'essaye de rester simple ici :D )

          Si tu dispose de la version "statique" d'une bibliothèque quelconque, il est donc -- a prior -- tout à fait possible de faire en sorte que l'ensemble du programme se trouve dans un seul et unique fichier exécutable ;)

          Le fait est qu'il est tout à fait possible de disposer d'une version statique de Qt, et donc, de faire en sorte que le programme ne dépende réellement que d'un seul et unique fichier exécutable.

          Le problème auquel on se heurte alors est celui de la double licence de Qt.  Car, s'il existe une version gratuite, librement utilisable et diffusable de Qt, on va -- pour faire simple -- dire que l'on est obligé d'utiliser la version partagée (dll) de Qt.

          Si l'on veut utiliser la version statique de Qt (et surtout, diffuser le programme qui l'utilise, ce qui est le but implicite de n'importe quel projet), nous sommes obligés d'utiliser la licence "payante" de Qt.

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            1 avril 2021 à 15:54:54

            koala01 a écrit:

            oui, mais pas seulement.

            Pour faire "simple", si tu veux que ton programme puisse ne fonctionner qu'avec un seul fichier .exe (et rien d'autre), ce qu'il faut avant tout, c'est utiliser la notion de bibliothèque statique.

            Oui, c'est vrai ! j'y ai complètement zappé lorsque j'ai répondu !

            • Partager sur Facebook
            • Partager sur Twitter
              2 avril 2021 à 15:45:28

              koala01 a écrit:

              Salut,

              rouloude a écrit:

              Je vais répondre à la deuxième question : C'est possible en utilisant seulement les fonctions du système, comme tu parles de Windows sous Windows 2 solution : soit tu fais un programme avec les api du système Win32 ça c'est l'ancienne méthode. Actuellement les nouvelles version de Windows ont le framework .NET d'installée depuis un moment déjà donc tu fais une application de ce type.

              oui, mais pas seulement.

              Pour faire "simple", si tu veux que ton programme puisse ne fonctionner qu'avec un seul fichier .exe (et rien d'autre), ce qu'il faut avant tout, c'est utiliser la notion de bibliothèque statique.

              Une bibliothèque statique est en réalité une archive dans laquelle on va trouver le code binaire exécutable de l'ensemble des fonctionnalités proposées et dans laquelle l'éditeur de liens ira "piocher" chacune des fonctionnalités qui sont utilisées par le programme afin, justement, de les ajouter au fichier exécutable final (j'essaye de rester simple ici :D )

              Si tu dispose de la version "statique" d'une bibliothèque quelconque, il est donc -- a prior -- tout à fait possible de faire en sorte que l'ensemble du programme se trouve dans un seul et unique fichier exécutable ;)

              Le fait est qu'il est tout à fait possible de disposer d'une version statique de Qt, et donc, de faire en sorte que le programme ne dépende réellement que d'un seul et unique fichier exécutable.

              Le problème auquel on se heurte alors est celui de la double licence de Qt.  Car, s'il existe une version gratuite, librement utilisable et diffusable de Qt, on va -- pour faire simple -- dire que l'on est obligé d'utiliser la version partagée (dll) de Qt.

              Si l'on veut utiliser la version statique de Qt (et surtout, diffuser le programme qui l'utilise, ce qui est le but implicite de n'importe quel projet), nous sommes obligés d'utiliser la licence "payante" de Qt.

              Merci beaucoup pour cette explication détaillée.

              Je pense que je vais me tourner vers le .NET pour réaliser la partie graphique de mon projet car je n'ai pas envie de payer Qt. 



              • Partager sur Facebook
              • Partager sur Twitter
                2 avril 2021 à 17:48:45

                ThéoRamousse a écrit:

                Je pense que je vais me tourner vers le .NET pour réaliser la partie graphique de mon projet car je n'ai pas envie de payer Qt.

                Ou bien, tu peux aussi, tout simplement, t'assurer que ton programme fournisse, effectivement, les dlls requises par Qt, en les plaçant, a priori, dans le même dossier que l'exécutable de ton programme (et en t'assurant de fournir la "bonne version", la version "release" des dlls si tu fournis la version "release" de ton programme :D) ;)

                • Partager sur Facebook
                • Partager sur Twitter
                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait

                Questions de débutant

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown