Compilation VC++

harlock999 Messages postés 7 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 novembre 2006 - 16 nov. 2006 à 10:58
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 22 nov. 2006 à 11:15
Bonjour,

J'ai effectué un ptit web browser simplifié avec des components activx. Mon problème est que j'aimerai avoir une application autonome sans dll dans le répertoire de l'appli ou dans system32, pour pouvoir le lancer a distance sans que les dll soient présentes sur la machine distante...

Mais j'ai l'impression que VC++ ne permet pas de merger les dll dans l'exe.

Si quelqu'un a une soluce je suis preneur merci bien :)

A plus !

5 réponses

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
16 nov. 2006 à 12:38
ouhlala
disons que effectivement, ce n'est pas une solution standard de mettre les dlls dans l'exe.
Disons que ce n'est pas possible à la compilation, ce n'est pas la faute de VC++: la norme C et C++ ne le permet pas ( tout simplement parce que point de vue bas niveau, ce n'est pas possible )

cela dit, 2 ( au moins ) solutions s'offrent à toi :
Soit tu mets toutes tes dlls en ressource, et tu les recopie sur le disque au runtime si elles n'existent pas déjà. à la fin de l'executable tu rajoutes la taille de chaque dll, puis le nombre de dlls
Soit tu copie-colle le contenu de tes dlls à la fin de ton .exe, tu l'ouvre avec fopen au runtime, tu te places 4octets avant la fin, tu lis l'unsigned int : c'est le nombre de dlls.
à partir de là tu vas en arrière pour connaitre la taille de chaque dll, et tu les extraits si besoin est.

Maintenant, la grande question :
Pourquoi diable as tu besoin de faire ça ?
Si c'est pour l'exec à distance sur un windows, ben le repertoire system32, il l'aura aussi.
Si c'est pour le faire tourner sous unix, ça marchera forcément pas, les .exe y connait pas ^^

Tu as des dlls particulières dans le rep de ton programme ??

_______________________

Omnia vincit labor improbus
0
harlock999 Messages postés 7 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 novembre 2006
17 nov. 2006 à 22:25
Merci pour la réponse,
En fait, ce petit browser allègé aura pour but d'être lancé à distance. Ce qui implique que meme si les dll sont dans le répertoire de l'exécutable, ou même dans system32 elles ne se chargeront pas sur le poste de l'utilisateur qui essaye de le lancer.
Pour apporter plus de précision, j'ai fait un projet windows form. Et je met un objet COM internet web control.

De plus j'ai découvert que le framework.Net doit obligatoirement être installé sur le poste utilisateur. (pour le déploiement c'est pas ça !).

Sinon excuse de mon ignorance ! Mais que veux-tu dire par mettre les dll en ressources ? (peut être dans le 'folder' Ressource de la solution--> add existing item... ???) Et comment rajouter à la fin de l'executable ? En gros as-ty plus de précisions a me fournir pour cette premire solution si possible sans trop abuser de ton temp ?

Merci beaucoup.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
18 nov. 2006 à 11:41
ben dans les .exe windows, tu as la possibilité d'ajouter des icones, des trucs comme ça .. mais aussi n'importe quel type de fichier . Google est ton ami. Je re sur mon PC dans 2 jours, je pourrai t'envoyer un truc dans le genre.

_______________________

Omnia vincit labor improbus
0
harlock999 Messages postés 7 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 23:32
Bah j'ai déjà mis une icon a mon appli en ressource ! et j'avais essayer de mettre aussi les dll... mais sans succès !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
22 nov. 2006 à 11:15
normal, il faut la réécrire sur le disque, pas d'autre solution

_______________________

Omnia vincit labor improbus
0
Rejoignez-nous