[C++] Réunir tout en 1 seul exe
Fermé
CaporalDead
Messages postés
209
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
23 mars 2011
-
1 avril 2008 à 17:53
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 2 avril 2008 à 15:02
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 2 avril 2008 à 15:02
A voir également:
- [C++] Réunir tout en 1 seul exe
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Réunir plusieurs pdf en un seul - Guide
- .Exe - Télécharger - Divers Utilitaires
- Bat to exe converter - Télécharger - Édition & Programmation
- Mon téléphone appelle tout seul - Forum Mobile
4 réponses
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
2 avril 2008 à 00:42
2 avril 2008 à 00:42
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
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
2 avril 2008 à 01:12
2 avril 2008 à 01:12
Aucune idée moi windows tu sais... Mais ouais c'est peut être comme un .so. Le nom le laisse penser en tout cas.
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
2 avril 2008 à 10:06
2 avril 2008 à 10:06
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.
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
2 avril 2008 à 15:02
2 avril 2008 à 15:02
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.
2 avril 2008 à 00:59
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...