Non, ça ne marche toujours pas.
avec un logiciel comme celui ci :
http://nsis.sourceforge.net
Quand tu execute tn programme dans un autre poste (ordinateur cible) il te demande d'installer une fichier QUELQUECHOSE.DLL, tu le met dans le meme repertoire que l'executable ou dans System32. tu procède par elimination pour detecter toute les dépendances. Mais il ya des outils qui ermettent de detecter les dll dont depend ton executable.ldd par exemple
If you type Google into Google, you Can break the internet" - The IT Crowd
Bon, j'ai trouvé un prog sur le net qui cherche toutes les dépendances d'un.exe. Liens: http://www.dependencywalker.com/
J'ai donc rajouté les dll qu'il m'a indiqué: KERNEL32.dll, msvcp90.dll, msvcr90.dll, mais toujours le même message d'erreur.
J'avais pas vu ta réponse, je vais essayer de l'installer comme tu dis.Merci
J'ai essayé avec l'installateur(très bon prog) mais rien n'y fait.Toujours le même message mais,lorsque je l'installe sur mon ordi tous vas bien.
salut,
il te manque les fichiers manifest qui vont avec les DLL ; par exemple Microsoft.VC90.CRT.manifest
regarde dans le répertoire de VC/redist/
ou installe le redistribuable VC2008 : http://www.microsoft.com/downloads/d...displaylang=fr
(comme te l'as déjà dit 3dArchi)
@+
Et il manque vraisemblablement le manifeste de ton programme directement.
Donc :
- installe le CRT de Microsoft (pas juste copier, installer pour être sûr)
- compile ton programme avec l'option embeded manifest (voir dans les options)
- copie ton exe
- ça marche si tout a été fait correctement.
Super,ça marche .Il fallait bien rajouter le fichier "Microsoft.VC90.CRT.Manifest".
Donc au final, pour faire fonctionner un prog compilé sous visualC++ sur un ordi où il n'est pas installé, il faut : Microsoft.VC90.CRT.Manifest, kernel32.dll, msvcp90.dll, msvcr90.dll, ntdll.dll.
Merci pour votre aide
Non, ne copie surtout pas kernel32 et ntdll, ils sont déjà présent sur l'ordinateur cible (à moins que tu veuilles le crasher).
T'as peu de chance de pouvoir écraser kernel32.dll !
Mais dans tous les cas:
Il est interdit de 'fournir' les DLLs de runtime (msvcrt....) comme cela, il faut passer par l'installeur (redist...) des librairies ad-hoc. Sinon, tu auras des problêmes d'installation.
Autre solution, compiler avec les runtimes en *statique* (comme ça pas de problême de version/installation)
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Salut,
Comment faire pour compiler les runtimes en static?
Merci
En mettant la bonne option dans les paramètres du projet.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Hmmm... je viens de vérifier sous Visual 9, et en effet, les DLL (et manifest) sont fournies comme ça, sans installeur, bien rangées par contre
Avec amd64 (x64), ia64 (ia64à et x86 (x32). Y a même les debugs... dans une répertoire appelé "debug_nonredist" situé sous.... "redist" !
Y a pas à dire, ils sont fort !
Mais le premier choix, d'après la doc, est quand même d'installer (comme pre-requisite à l'installeur):
vcredist_x86.exe
vcredist_x64.exe
vcredist_IA64.exe
Sinon, on peut installer directement les DLLs mais uniquement dans le répertoire de l'application (il est interdit de les placer dans le système sans passer par les executables ci-dessus).
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Donc, finalement, pour faire fonctionner un prog compiler sous visual C++ 2008, sur un autre ordi, il faut mettre avec l'éxecutable: "Microsoft.VC90.CRT.Manifest", "msvcp90.dll et "msvcr90.dll".
Où alors il faut fournir le fichier "vcredist_x86.exe(à télécharger sur le sîte de microsoft).
D'après ce qui a été dit, mais je n'ai pas vérifié, il suffirait auusi de changer, dans les options du compilo(plus besoins de fournir de dll):Merci pour vos réponses!Configuration properties, C / C++, Code generation, changer le Multi-threaded DLL en Multi-threaded.
Plus d'infos sur pourquoi elle n'est pas la meilleure (en Anglais) : http://blogs.msdn.com/larryosterman/...29/123090.aspx
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager