Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3049 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Fournir un projet compilé sous Visual C++ à un ami

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Fournir un projet compilé sous Visual C++ à un ami

n°1751223
Dune_22
Posté le 25-06-2008 à 16:58:49  profilanswer
 

Bonjour  :)  
Je compile sous l'IDE Visual C++ 9.0 Express Edition, et une erreur survient lorsque l'utilisateur (qui n'a pas VC++) ouvre le fichier exécutable, alors que j'ai fourni tous les bons fichiers (DLL nécessaires pour librairies notamment).
Voici l'erreur :
 
http://duneudne.free.fr/erreur.jpg
 
J'ai appris que lorsque l'on compilait un projet sous Visual, il fallait fournir des DLL supplémentaires si on ne l'avait pas installé.
Ne voulant pas changer d'IDE, je vous demande quelles sont ces DLL (j'ai bien cherché sur des sites, notamment Microsoft, mais rien du tout).
Merci d'avance :)

mood
Publicité
Posté le 25-06-2008 à 16:58:49  profilanswer
 

n°1751266
dap++
Script kiddie
Posté le 25-06-2008 à 17:33:33  profilanswer
 

Fais une recherche avec "Redistributable Package".


---------------
dap.developpez.com
n°1751272
Dune_22
Posté le 25-06-2008 à 17:44:18  profilanswer
 

On me propose de le télécharger, mais peux-tu me dire à quoi cela va me servir o_O ?

n°1751467
dap++
Script kiddie
Posté le 26-06-2008 à 00:13:03  profilanswer
 

Ben ça permet de faire tourner les programmes de VC++ sans devoir l'installer. Ou bien tu peux compiler en statique.


---------------
dap.developpez.com
n°1751913
Dune_22
Posté le 26-06-2008 à 16:44:47  profilanswer
 

"Compiler en statique"
Euh.... c'est quoi ça ???  :??:  
 
"Faire tourner les programmes de VC++ sans devoir l'installer"
Mon but est de fournir mon projet à un e personne qui n'a connaissance du C que comme la 3e lettre de l'alphabet  :sol: .
Est-il possible que mon exécutable (quitte à ce qu'il soit grossi) puisse être indépendant (peut-être compilé en statique c'est ça ?), ou bien que l'on fournisse les DLL nécessaires à un projet VC++ ?
Ca serait sympa :)
 
P.S.: Je travaille avec d'autres librairies (comme SDL et FMOD), donc je ne peux pas (et ne veux pas) me passer de DLLs.

n°1751974
dap++
Script kiddie
Posté le 26-06-2008 à 18:42:20  profilanswer
 

Oui quand c'est compilé en statique toutes les fonctions appelées sont copiées dans l'exécutable. Si c'est dynamique il faudra que les DLL soient là, soit tu fais un installeur, soit tu les mets dans le même répertoire de l'exécutable.


Message édité par dap++ le 26-06-2008 à 18:42:33

---------------
dap.developpez.com
n°1751976
Dune_22
Posté le 26-06-2008 à 19:11:02  profilanswer
 

Génial, donc il me suffit de donner les DLL de VC++ nécessaires, tu les connais ? Merci beaucoup !

n°1751997
xilebo
noone
Posté le 26-06-2008 à 20:26:29  profilanswer
 

Je pense que c'est un autre problème car lorsqu'une dll manque, il te l'annonce dans une boite de dialogue en la nommant.
 
De plus, j'ai exactement le meme probleme avec un programme développé par ma société : je le deploie sur une machine avec un windows vierge : ca ne marche pas (meme message que toi, sauf que ca a été compilé en Visual Studio 2005), et sur une autre machine vierge (portable Dell sortant de la boite), ca fonctionne. A vrai dire, le programme fonctionne meme partout sauf sur cette machine avec un windows vierge. Evidemment je n'ai aucune indication pourquoi il m'affiche un tel message (moins explicite tu meurs).
 
Je précise que le programme que j'essaie d'executer ne fait quasiment aucun appel systeme, excepté une creation de fenetre, un Bitblt pour l'affichage, quelques CreateThread et CreateMutex, des fonctions E/S pour parler sur un port COM, ainsi que la pile TCP-IP. Autant dire tout ce qu'il y a de plus classique (pas de .net, pas d'utilisation de controle graphique bizarre, pas de base de données etc ...).
 
Je flag pour avoir l'info car ça peut m'intéresser à l'occasion :)
 

n°1752429
Dune_22
Posté le 27-06-2008 à 17:26:04  profilanswer
 

Ca serait gentil que quelqu'un me donne (enfin) le nom de ces DLL :D
En fait, ça ne marche que sur les ordis qui ont installé Visual C++ ; c'est pour ça que sur ton ordi vierge ça marche pas :) .

n°1752444
dap++
Script kiddie
Posté le 27-06-2008 à 17:51:22  profilanswer
 

Le redistributable package est prévu pour ça, c'est écrit dans la description :
"The Microsoft Visual C++ 2005 Redistributable Package (x86) installs runtime components of Visual C++ Libraries required to run applications developed with Visual C++ on a computer that does not have Visual C++ 2005 installed."
 
Le message d'erreur bizarre ça doit être parce qu'il y un nouveau système depuis VC++ 2005 (je crois) : les DLL sont dans WINDOWS\Winsxs et les programmes qui les utilisent doivent avoir un manifest qui décrit à quoi ils touchent. Quand il y a une erreur ça donne un message dans ce genre-là (de mémoire) et a priori c'est soit que quelque chose n'a pas été trouvé, soit que tu as mal chipoté au manifest.


---------------
dap.developpez.com
mood
Publicité
Posté le 27-06-2008 à 17:51:22  profilanswer
 

n°1752462
Dune_22
Posté le 27-06-2008 à 18:55:34  profilanswer
 

Excuse moi si je suis lourd, mais quelles sont les noms des DLL remplaçant le redistributable package :D

n°1752464
dap++
Script kiddie
Posté le 27-06-2008 à 19:08:34  profilanswer
 

Si la personne ne l'a pas installé dis-lui de le faire, de toute façon elle en aura sûrement besoin pour un autre programme. [:spamafote] Ou bien fais-lui un installeur. Si tu tiens à savoir les noms des DLL pour le C c'est des trucs du genre msvcr80.dll à mettre dans des répertoires de WINDOWS\WinSxS mais tu n'as pas à t'en soucier. :??:


---------------
dap.developpez.com
n°1752466
Dune_22
Posté le 27-06-2008 à 19:16:42  profilanswer
 

En lui faisant un installeur on pourra y indiquer l'adresse du fichier d'installation ???

n°1752472
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-06-2008 à 20:04:54  profilanswer
 

Dune_22 a écrit :

Excuse moi si je suis lourd, mais quelles sont les noms des DLL remplaçant le redistributable package :D


Y'a pas.
Comme son nom l'indique, le redistributable package est un package à installer sur la machine du client pour faire tourner l'appli. Hormis l'assembleur, tous les langages nécessitent un runtime sur la machine cliente, car il ne faut pas croire que lorsque tu appelles la fonction "printf()" par exemple, elle tombe du ciel. Elle est contenue dans une dll qui est appelée par l'exécutable final.
Donc soit tu compiles tout en statique, soit tu fournis le redistributable package. Mais tu ne fais pas le boulot à moitié en donnant des dll piochées par ci par là. C'est le meilleur moyen de rendre le système instable.
Quant à indiquer l'adresse lors de l'installation, c'est un coup de canon pour tuer une mouche. Ecris donc l'adresse dans une doc que tu livres, et laisse ton client se débrouiller.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1752474
xilebo
noone
Posté le 27-06-2008 à 20:13:32  profilanswer
 

et pourquoi ca n'est pas fourni en standard avec l'OS ?
 
c'est étonnant, j'ai eu le meme probleme sur une machine vierge , mais pas sur une autre (machine vierge egalement sortant du carton d'emballage). La seule différence : d'un coté un CD de windows XP SP2 OEM, de l'autre coté, un portable DELL avec l'OS préinstallé.
 
Cela dit, merci pour l'information, je vais chercher ce 'redistribuable package' et l'installer :)

n°1752485
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-06-2008 à 21:02:48  profilanswer
 

xilebo a écrit :

et pourquoi ca n'est pas fourni en standard avec l'OS ?


Certains runtimes sont préinstallés : .NET sous les Windows récents, le runtime VB, le framework MFC, etc...
Ceci dit, l'autre jour j'ai voulu installer .NET 3.5 sur le PC de ma copine qui était préinstallé avec .NET 1.1. Son PC tourne sous Windows XP Mediacenter. Et bien impossible d'installer une version plus récente que la 1.1. Ca explose MediaCenter. Et impossible de désinstaller le framework 1.1 non plus (même avec le .NET removal tool). J'ai du tout reformater. Une recherche sur les forums Microsoft m'a appris que MediaCenter ne pouvait fonctionner que sous 1.1, et qu'il interdisait l'utilisation d'un framework plus récent sinon il plantait... Du coup, elle est bloquée sur le framework 1.1... [:kiki]
Donc attention aux runtimes préinstallés aussi.
 

xilebo a écrit :


c'est étonnant, j'ai eu le meme probleme sur une machine vierge , mais pas sur une autre (machine vierge egalement sortant du carton d'emballage). La seule différence : d'un coté un CD de windows XP SP2 OEM, de l'autre coté, un portable DELL avec l'OS préinstallé.


Normal, les PC de constructeurs sont souvent livrés avec tout un tas de merdes programmes préinstallés, dont certains ont certainement besoin du runtime.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1752491
xilebo
noone
Posté le 27-06-2008 à 22:08:28  profilanswer
 

Merci de l'explication :) effectivement les DELL (meme si c est une version pro, donc avec moins de "merdes" ) sont préinstallés avec quelques programmes, alors que le windows OEM non.
 
Y a-t-il un equivalent a ldd sous windows pour connaitre les dependances nécessaires à un executable ? process explorer est pas mal, mais il faut que le process soit lancé pour voir toutes ces infos :(

n°1752494
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-06-2008 à 22:16:03  profilanswer
 

Dependancy Walker


---------------
J'ai un string dans l'array (Paris Hilton)
n°1753023
Dune_22
Posté le 29-06-2008 à 17:02:54  profilanswer
 

Citation :

Quant à indiquer l'adresse lors de l'installation, c'est un coup de canon pour tuer une mouche. Ecris donc l'adresse dans une doc que tu livres, et laisse ton client se débrouiller.


Euh... tout d'abord sache que mes clients sont pas du genre à se débrouiller ^^
J'ai déjà du mal à leur faire installer un fichier setup alors hein :D pour la doc
En fait je pensais plutôt à l'installation du redistribuable package PENDANT l'installlation du programme (Inno Setup). Par exemple lorsqu'en C++ on installe la librairie Qt, on nous propose de télécharger une version récente de MinGW...
Mais bon si ça pose trop de problème, je fournirait au client les deux fichiers d'installation, ça le tuera pas  :na:  .
Merci pour vos réponses :)

n°1753149
djobidjoba
Posté le 29-06-2008 à 23:17:25  profilanswer
 

salut, je ne connais pas inno setup mais il n'est sans doute pas impossible de lancer un programme quelconque avant (ou après) la phase de copie des fichiers de ton application ?
en lancer le setup du package microsoft en ligne de commande plus un petit /? ou -help avec un peu de chance il existe des options pour le lancer en mode silencieux, au pire il doit y avoir une option depuis inno setup.
de plus, ce package ne fait sans doute pas qu'une copie de nouveaux fichiers systèmes, il fait peut être aussi des inscriptions en base de registre !
il faut peut être prévoir un reboot en fin d'installation
si tes clients ne sont pas du genre à se débrouiller il vaut mieux faire une setup bien clean, qui marche a 100% mais une bonne doc est parfois aussi efficace
j'ai deja eu le coup avec une appli dont l'impression (crystal report) ne fonctionnait pas si la rdcruntime n'était pas installée. Si c'est de ce package dont il est question le setup est même différent d'un os à un autre (nt / win2000)


Message édité par djobidjoba le 29-06-2008 à 23:30:40
n°1753617
Dune_22
Posté le 30-06-2008 à 17:45:41  profilanswer
 

Ok InnoSetup est un logiciel pour créer des installations. Je pensais que c'était le plus connu, mais visiblement non :D.
Inno Setup ne propose pas d'explication claire là-dessus, et il faudrait le coder dans le script, or je ne m'y connais pas ; donc je pense plutôt que je vais leur fournir deux logiciels d'installation, et à la fin de l'installation du projet C, je ferai ouvrir un .txt pour informer l'utilisateur de la necessité de lancer le Redistribuadble Package :)
Voilà dernière petite question, je pense que la version 3.5 suffira amplement non ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Fournir un projet compilé sous Visual C++ à un ami

 

Sujets relatifs
Utilisation dll .net dans une application C++ Visual Studio 6aide pour un bootloader en C sur pic32
XML_C++[C#] Analyser des trames udp sur pocket pc
Demande d'aide pour programmation en Cperte d'evenements inter thread C++
[C++] Erreur SzrmdirNEED HELP un débutant C# inclusion de classe
define probleme avec C 
Plus de sujets relatifs à : [C] Fournir un projet compilé sous Visual C++ à un ami


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR