Exécutable compilé sur une machine ne fonctionne pas sur une autre [Résolu]

Signaler
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Est-ce normal qu'un programme compilé sur une machine, qui fonctionne parfaitement sur celle-ci, ne fonctionne pas sur d'autres. C'est-ce qui m'arrive en ce moment. Lorsque je copie le fichier exe sur une autre machine j'obtiens un message qui me dit que l'application ne peut démarrer parceque la configuration n'est pas correct.

J'ai essayé plusieurs applications que j'ai créé sur mon ordi (dont un n'est qu'un simple "Bonjour le monde") qui ont planté sur d'autres machines. Que se passe-t-il?

Merci de votre aide

Philippe

12 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Un exe natif n'a besoin de rien pour tourner sur un autre Windows.

Dans Visual Studio, il y a "projet de déploiement" mais je ne saurais t'en dire plus, je ne fais que du natif.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Avec MFC ça reste du natif, ton exe sera lié aux dlls MFC et faudra donc un setup.

CLR ce n'est évidemment plus du tout du natif, 'managé' est le nouveau mot pour 'interprété', parait que ça fait mieux.

Pour créer des fenêtres tu peux faire avec MFC mais si tu veux une indépendance totale alors projet Win32 APP GUI (propriétés -> VIDE).
Tu peux utiliser aussi (ce que je fais):
TEMPLATES C/C++ POUR VS 2005
http://www.cppfrance.com/code.aspx?ID=36940

ciao...
BruNews, MVP VC++
Messages postés
192
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
30 janvier 2008

<endl>En fait le principe de la compilation est de transformer le code dit "haut niveau" tel que le C, en langage comprehensible par la machine. Hors toutes les machines ne parlent pas exactement le meme langage, aussi chaque compilateur est désigné pour une ou plusieurs machines (selon le processeur Intel, AMD, etc ou encore le systeme d'exploitation). Essais de changer de compilateur.
Quel compilateur utilises-tu et sur quelles machines as-tu effectué les tests?</endl>
Messages postés
87
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2007

Si t'es sur PC avec VISUAL, va dans les options de ton projet -> C/C++ -> Génération du code
Dans l'entrée Bibliothèque runtime, choisire Multithread ou Débogage Multithread au lieu de la dll.

L'exe final sera plus gros mais passera partout.
 (La dll de runtime est installée avec Visual... donc ca passe pas sur les autres machines qui n'ont pas cette dll)
Messages postés
192
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
19 octobre 2020

Tu n'as pas fais de .net au moins?
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007

Merci Phil,

ta solution fonctionne partiellement. Je l'ai essayé sur un projet Win32 console et effectivement je suis maintenant capable d'exécuter le fichier .exe sur d'autre machine. Le fichier a effectivement grossi ( de 48k à 612k!).

Cependant pour un projet CLR Windows Form Application, à la compilation j'obtiens un message d'erreur m'indiquant que l'option multithread n'est pas compatible avec le CLR pur. J'imagine que cela est en relation avec le commentaire de Nixeus. Y-a-t-il alors une solution?


J'ai également pensé à copier la dll runtime sur les autres machines: est-ce une alternative valable? Si oui quel est le nom des 2 dll (puisqu'il y en a un pour debug et l'autre release) et où sont - elles localisées?  où devrais-je les installés sur les nouvelles machines?


Merci encore une fois ... je sens que je progresse.


Philippe
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007

Nixeus,

j'ai quelque projets CLR Windows Form application. J'imagine que c'est du dot Net. Si c'est le cas que proposes-tu? Une autre technologie, laquelle?


Merci

Philippe
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Une autre techno ???
Certes, du natif C/C++ direct sur API Windows.

Dans tous les cas, aucun prog en interprété, que soit du .net ou autre, ne se livre sans un setup, jamais directement l'exe.

ciao...
BruNews, MVP VC++
Messages postés
87
Date d'inscription
jeudi 22 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2007

Je ne peut plus t'aider si tu fais du dotNet. Etant donné que je n'aime pas dotNet et que je ne l'utilise pas, je ne peut pas te renseigner.

Les dll de runtime de la libc sont msvcrt*.dll avec * qui contient une partie variable. "msvcrt70.dll" par exemple (msvcrtd*.dll pour le debug).
Pour les dll de runtime de dotNet il suffit d'installer le framework .NET sur tes machines.
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007

BruNews,


pourrais-tu m'indiquer des liens sur l' ABC de produire des set-up que ce soit pour du natif  C/C++, du managed C/C++, du dot.Net etc.


Merci


Philippe
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007

effectivement j'ai commencé à consulter l'aide en ligne  pour construire des projets déploiement. Également j'ai trouvé ces liens:

http://www.codeguru.com/Csharp/.NET/net_general/visualstudionetadd-ins/article.php/c7219
http://www.codeguru.com/Csharp/.NET/net_vs_addins/visualstudioadd-ins/article.php/c7245

Merci à tous pour les pistes de solutions.

Philippe
Messages postés
6
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
30 avril 2007

Brunews,

Lorsqu'on parle de C++ natif je perds parfois mon latin:

A)  C++ avec MFC est - ce encore du natif
B) même question pour le CLR (est -ce cela que l'on appelle du C++ managé?)
C) si je veux construire des écrans windows en natif quel type de projets dois-je choisir dans Visual Studio?

Merci

Philippe