[C++] Réunir tout en 1 seul exe
CaporalDead
Messages postés
209
Date d'inscription
Statut
Membre
Dernière intervention
-
Mahmah Messages postés 496 Date d'inscription Statut Membre Dernière intervention -
Mahmah Messages postés 496 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Voilà, j'ai créer un petit programme en C++ avec la lib SDL et SDL_image et je voudrais savoir si c'est possible de créer un seul éxécutable qui contient toutes les DLL et les Images etc... et qu'on ai plus qu'à cliquer dessus et tout se lance ?
Merci !
Voilà, j'ai créer un petit programme en C++ avec la lib SDL et SDL_image et je voudrais savoir si c'est possible de créer un seul éxécutable qui contient toutes les DLL et les Images etc... et qu'on ai plus qu'à cliquer dessus et tout se lance ?
Merci !
A voir également:
- [C++] Réunir tout en 1 seul exe
- .Exe - Télécharger - Divers Utilitaires
- Svchost exe - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Winrar exe - Télécharger - Compression & Décompression
- Comment réunir plusieurs pdf en un seul - Guide
4 réponses
Hum je pense que ça doit dépendre de s'il s'agit de librairies statiques (.a) ou dynamiques (.so). Dans le premier cas ça me paraît possible mais pas dans le second. Vu que sous windows tout s'appelle .dll je ne sais pas trop... Mais à mon avis c'est mieux de gardé un exécutable et ses librairies.
Bonne chance
Bonne chance
Aucune idée moi windows tu sais... Mais ouais c'est peut être comme un .so. Le nom le laisse penser en tout cas.
salut.
Pareil que les autre : peu de certitude.
Sous Linux, l'option -static ajouter à l'édition des liens permet de s'affranchir en grande partie de certain .so, ce qui permet une certaine portabilité des codes (d'un linux à l'autre).
à tester sous Windows.
Pareil que les autre : peu de certitude.
Sous Linux, l'option -static ajouter à l'édition des liens permet de s'affranchir en grande partie de certain .so, ce qui permet une certaine portabilité des codes (d'un linux à l'autre).
à tester sous Windows.
Salutations,
Sous MS Windows les .dll sont les bibliothèques dynamiques et les .lib les statiques qui contiennent soit le code minimum pour compiler un programme qui utilisera une dll, soit une bibliothèque complète.
Le plus simple pour inclure une dll dans un exécutable est de l'importer en tant que ressource de l'exécutable. (Comme les icônes etc) Il faudra alors la ressortir en début d'exécution et la charger dynamiquement.
La fonction Win32 GetTempFileName permet d'obtenir un nom de fichier dans le répertoire temporaire de Windows (%WINDIR%\temp\) afin de 'dumper' sa dll dedans. Je ne suis pas sûr que l'on puisse compter sur un programme pour charger automatiquement la dll étant donné que le nom de fichier temporaire aura l'extension "tmp".
Solutions autres:
- Tenter de "démonter" la dll et voir si il est possible de linker les modules obtenus. J'avais croisé des outils pour le démontage mais je ne sais plus leurs noms. (Cela avait un rapport avec la transformation d'une dll pour la rendre compatible avec Dev-cpp qui prend des fichiers lib*.a re-windowsés)
- Tenter de former l'exécutable normal, d'inclure la dll en tant que ressource (ou en bloc dans le segment de code ?) et modifier la table des fonctions. Il faudra aussi soit neutraliser le chargement de la dll, soit ne pas la linker la dll et simplement rajouter les entrées dans la table des fonctions. Ce sera peut-être alors plus simple d'avoir prévu un jeu de pointeurs. Pour ne pas avoir à modifier tout le code mais juste les pointeurs. Enfin à tester...
M.
Sous MS Windows les .dll sont les bibliothèques dynamiques et les .lib les statiques qui contiennent soit le code minimum pour compiler un programme qui utilisera une dll, soit une bibliothèque complète.
Le plus simple pour inclure une dll dans un exécutable est de l'importer en tant que ressource de l'exécutable. (Comme les icônes etc) Il faudra alors la ressortir en début d'exécution et la charger dynamiquement.
La fonction Win32 GetTempFileName permet d'obtenir un nom de fichier dans le répertoire temporaire de Windows (%WINDIR%\temp\) afin de 'dumper' sa dll dedans. Je ne suis pas sûr que l'on puisse compter sur un programme pour charger automatiquement la dll étant donné que le nom de fichier temporaire aura l'extension "tmp".
Solutions autres:
- Tenter de "démonter" la dll et voir si il est possible de linker les modules obtenus. J'avais croisé des outils pour le démontage mais je ne sais plus leurs noms. (Cela avait un rapport avec la transformation d'une dll pour la rendre compatible avec Dev-cpp qui prend des fichiers lib*.a re-windowsés)
- Tenter de former l'exécutable normal, d'inclure la dll en tant que ressource (ou en bloc dans le segment de code ?) et modifier la table des fonctions. Il faudra aussi soit neutraliser le chargement de la dll, soit ne pas la linker la dll et simplement rajouter les entrées dans la table des fonctions. Ce sera peut-être alors plus simple d'avoir prévu un jeu de pointeurs. Pour ne pas avoir à modifier tout le code mais juste les pointeurs. Enfin à tester...
M.
Comme un .so sous linux, je ne pense pas qu'on puisse fondre une dll dans un executable comme s'il s'agissait d'une librairie statique...