IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probleme avec le fichier executable


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Par défaut Probleme avec le fichier executable
    bonsoir,
    je viens d'ecrire un programme sous Visual C++ 2005. Je voudrais savoir comment je peux le deployer sous d'autres machines.
    En fait j'ai copie son executable puis j'ai essaye de l'executer sur d'autres ordis, je me suis rendu compte que sur certaines machines cela marche mais sur d'autres cela ne marche pas (Windows refuse de l'executer sous pretexte que l'application n'est pas bien configuree). Qu'est ce qui peux en etre la cause?
    Comment remedier a cette situation?
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Il faut que tu fournisses les DLL de ton programme avec, et bien souvent aussi celle du Run Time : MSVCRT71.dll etc...

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Faut que tu compile tous en release.
    En debug, visual fait du pseudo code machine (je sais pas trop en faite ) qui ne se lance que lorsque que l'environnement VISUAL 2005 est installé sur la machine. Il faut donc que toute les lib et l'exe soit compilé en release

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    En fait c'est surtout qu'en mode debug, en général, Visual compile avec les libs "debug" (msvcrtD), qui ne sont PAS redistribuables !

    Sinon, effectivement, il manque probablement des DLLs...
    Mais pourquoi diable compiler avec la runtime en dll ?

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Bonjour,

    franc82 écrit :
    bonsoir,
    je viens d'ecrire un programme sous Visual C++ 2005. Je voudrais savoir comment je peux le deployer sous d'autres machines.
    En fait j'ai copie son executable puis j'ai essaye de l'executer sur d'autres ordis, je me suis rendu compte que sur certaines machines cela marche mais sur d'autres cela ne marche pas (Windows refuse de l'executer sous pretexte que l'application n'est pas bien configuree). Qu'est ce qui peux en etre la cause?
    Comment remedier a cette situation?
    Merci d'avance
    Et que fait-il ce programme ?

    Salut.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Il faut que tu installes vcredist_x86.exe sur les machines cible (ou la version SP1 si tu utilises msvc 8 avec le Service Pack 1, il y a un lien en page de la page).
    C'est la procédure recommandée pour installer les dll système, l'autre solution étant d'installer visual studio lui-même, ce qui n'est pas très pratique...

    MAT.

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Il faut que tu installes vcredist_x86.exe sur les machines cible (ou la version SP1 si tu utilises msvc 8 avec le Service Pack 1, il y a un lien en page de la page).
    Oui... de toute maniere, le redist est fourni dans Visual.
    Mais le redistribuable ne contient QUE les versions release !

    Citation Envoyé par Mat007 Voir le message
    C'est la procédure recommandée pour installer les dll système, l'autre solution étant d'installer visual studio lui-même, ce qui n'est pas très pratique...
    Et surtout illégal !

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Oui... de toute maniere, le redist est fourni dans Visual.
    Pas dans la version express...

    Citation Envoyé par nicroman Voir le message
    Mais le redistribuable ne contient QUE les versions release !
    Il est interdit de distribuer une version debug de son application de toute manière...

    Citation Envoyé par nicroman Voir le message
    Et surtout illégal !
    On peut toujours demander aux utilisateurs d'installer la version express j'imagine

    MAT.

  9. #9
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Attendez, vous êtes quand même pas en train de raconter qu'il faudrait un pack de distribution pour un programme compilé en Release avec Visual Studio ?

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Ca n'a pas grand chose à voir avec Visual....

    Si un executable est compilé avec le runtime en "dynamique", l'executable aura besoin de ce runtime installé sur la machine cible (que ce soit du .so, du .dll,...).
    Si compilé avec le runtime en static, non, bien sur !

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Pour récapituler il faut toujours compiler en release puis utiliser l'une des possibilités suivantes:
    - installer le pack redistribuable qui a déja été donné (pas hyper pratique)
    - fournir avec l'exe les 2 ou 3 dlls contenus dans le pack (aussi disponibles dans un dossier "Redist" à l'install de visual 2005 pro ou encore sur le net mais faut trouver)
    - compiler en mode statique, mais ce n'est pas forcément facile à trouver dans VC et ça m'a déja posé des problèmes (mais j'avoue ne pas m'être acharné dessus)
    Considérer aussi la solution ultime qui fonctionne toujours sans se poser de questions: utiliser mingw
    Citation Envoyé par nicroman Voir le message
    Ca n'a pas grand chose à voir avec Visual....
    Si, car sous visual ces dlls sont nécessaires même pour un hello world, sauf si on compile en runtime static mais la comme je dis c'est pas simple.

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    - fournir avec l'exe les 2 ou 3 dlls contenus dans le pack (aussi disponibles dans un dossier "Redist" à l'install de visual 2005 pro ou encore sur le net mais faut trouver)
    Il me semble qu'il faut éviter cela. Car vcredist_x86.exe va installer les bonne dll pour le bon OS. Pas exemple sous vista, se n'est pas les même dll que XP.
    Enfin c'est ce que j'avais compris. De plus je croit qu"il est interdit pas la licence de distribuer ces dll comme cela.

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    - fournir avec l'exe les 2 ou 3 dlls contenus dans le pack (aussi disponibles dans un dossier "Redist" à l'install de visual 2005 pro ou encore sur le net mais faut trouver)
    Et surtout ce n'est pas aussi simple : il faut aussi fournir avec un fichier manifest pour indiquer que les dll sont avec l'application. Par défaut le manifest inclus avec l'exe indique d'aller chercher les dll système dans le 'native assembly cache'.

    Pour plus d'informations : http://msdn2.microsoft.com/en-us/library/ms235532.aspx
    (mettre une dll avec l'exe s'appelle 'private assembly')

    MAT.

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Je ne pense pas, vu qu'elles sont fournies telles qu'elles avec la version pro et approximativement... partout sur le net en vrac. Il y a d'ailleurs beaucoup beaucoup de programmes qui les installent silencieusement (ce qui explique que parfois ça marche sur certains ordis ne possédant pas VC). Mais tu as peut-être raison pour la version de l'os, n'empèche que c'est odieusement énervant de devoir faire une solution de déploiement complexe avec install d'un runtime pour un langage compilé en code natif (sniff, dire que l'absence de machine virtuelle à déployer est l'un des seuls avantages).

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Et surtout ce n'est pas aussi simple : il faut aussi fournir avec un fichier manifest pour indiquer que les dll sont avec l'application. Par défaut le manifest inclus avec l'exe indique d'aller chercher les dll système dans le 'native assembly cache'.
    Boh, je l'ai déja fait en copiant bètement les dlls dans le dossier de l'exe et ça passait. Faudra m'expliquer alors.

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Je ne pense pas, vu qu'elles sont fournies telles qu'elles avec la version pro et approximativement... partout sur le net en vrac.
    J'avais essayé une fois, et les dll ne marchaient pas. Il manquais des entrées.
    Citation Envoyé par zais_ethael Voir le message
    Il y a d'ailleurs beaucoup beaucoup de programmes qui les installent silencieusement (ce qui explique que parfois ça marche sur certains ordis ne possédant pas VC).
    C'est peut être les installer fait avec visual.

    Citation Envoyé par zais_ethael Voir le message
    Mais tu as peut-être raison pour la version de l'os, n'empêche que c'est odieusement énervant de devoir faire une solution de déploiement complexe avec install d'un runtime pour un langage compilé en code natif (sniff, dire que l'absence de machine virtuelle à déployer est l'un des seuls avantages).

  17. #17
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Boh, je l'ai déja fait en copiant bètement les dlls dans le dossier de l'exe et ça passait.
    Oui moi aussi. Et des fois pas.

    J'ai l'impression qu'ils ont changé des trucs entre la version (express) RTM et SP1 en plus. Peut-être que par défaut le manifest inclus indique de chercher d'abord dans le répertoire courant maintenant (ou inversement).

    MAT.

  18. #18
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    C'est peut être les installer fait avec visual.
    Je pense que n'importe quel installeur peut installer (silencieusement) ces dll, j'utilise par exemple NSIS et je lance un vcredist_x86.exe sournois et caché à la fin et hop ni vu ni connu !

    MAT.

  19. #19
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    C'est peut être les installer fait avec visual.
    Je ne pense pas, j'ai jamais vu ce truc utilisé nulle part et je crois aussi que ça n'est utile que pour le dotnet.

    Je me dit que j'ai vachement bien fait de passer à mingw moi Vive les programmes qui font correctement leur boulot!

  20. #20
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Je pense que n'importe quel installeur peut installer (silencieusement) ces dll, j'utilise par exemple NSIS et je lance un vcredist_x86.exe sournois et caché à la fin et hop ni vu ni connu !

    MAT.
    Hé hé hé...
    Je me demande si je vais pas faire la même chose....
    J'utilise installJammer et je crois qu'on peut faire ça.

    Au fait, quand j'y pense, je sais pas comment on fait pour compiler en static sous Visual...

Discussions similaires

  1. Problème avec un fichier fichier.cpio.gz
    Par vbcasimir dans le forum Administration système
    Réponses: 8
    Dernier message: 21/02/2006, 13h24
  2. Probleme avec les fichier faire un copier coller
    Par mcdonald dans le forum Général Python
    Réponses: 4
    Dernier message: 29/01/2006, 13h38
  3. probleme avec un fichier
    Par elghadi_mohamed dans le forum C
    Réponses: 2
    Dernier message: 02/01/2006, 14h02
  4. probleme avec un fichier .dfm
    Par lestat1859 dans le forum C++Builder
    Réponses: 5
    Dernier message: 31/08/2005, 18h02
  5. [VB.NET] Probleme avec les fichiers!!
    Par ludovic85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/01/2005, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo