:D Bonjours,
Voila ma question.Je possède un ordi avec processeur amd et je compile avec visual c++ express édition.Je voudrais savoir comment je pourrais compiler mon prog de façon à ce qu'il puisse marcher avec les processeurs intel.
Merci
Version imprimable
:D Bonjours,
Voila ma question.Je possède un ordi avec processeur amd et je compile avec visual c++ express édition.Je voudrais savoir comment je pourrais compiler mon prog de façon à ce qu'il puisse marcher avec les processeurs intel.
Merci
Ben il marche avec les processeurs intel ...
:D Un prog compiler avec un processeur amd marchera aussi avec un processeur intel?
Oui à moins d'utiliser des jeux d'instructions que seul les proco amd supporte mais par défaut c'est pas le cas avec le compilo de VC++
:D Merci
Voila, je viens d'essayer le prog(un jeux) sur l'ordi de mon frère(processeur intel), et il ne marche pas.J'ai le droit à un message me disant : "Ce programme n'a pas pu démarrer car la configuration de l'application est incorrect.Réinstaller l'application pourrait corriger le probléme".
Quelqu'un aurait-il une idée?
Merci
:D Il n'y a pas d'installation, j'ai directement copier le .exe compilé sur mon ordi avec les dll et.bmp.
salut;
Le jeux d'instruction standard serait Intel X86 je crois, a moins que motorola sorte un nouveau jeux d'instruction
Dans les option de visual C++ express, j'ai sélectionné:
Ordinateur cible : Machinex86.
re:
Normalement tu peux ne pas choisir de machines, et choisir la valeur par defaut, il me semble bien que le combobox contient Amd64 Machne x86 et une 3eme valeur qui est celle par defaut
On parle bien du même exe que tu as généré avec Visual ?
A moins que tu n'aie insérer des instructions spécifiques (en assembleur) dans ton code, normalement, il doit s'exécuter sur les deux cibles avec la configuration par défaut (MachineX86 (/MACHINE:X86)). Peux-tu poster un bout de code minimal qui reproduise ton problème ?
Oui, on parle bien du .exe généré par visual.Mon code est vraiment trop gros pour que je l'affiche ici, mais j'ai éssayé avec un programme très simple, dont voici le code,
et le problème est toujours le même.J'ai droit au même message d'érreur.Je n'ai rien fait en assembleur, visual est configuré par défault.Code:
1
2
3
4
5
6
7
8
9
10
11 #include<iostream> using namespace std; int main(int argc, char* argv[]) { cout<< "hello world" << endl; system("PAUSE"); return 0; }
Merci
Je connais pas VC++ mais ile me semble qu'il faut donner une dll au client avec le .exe pour tout programme compilé avec vc++ en debug non?
:D Peut-être bien, mais je n'ai vraiment aucune idées de quelle dll il faut.Je n'avais jamais chérché à faire fonctionner mes programmes sur processeurs intel.
Une idée?
msvcrt.dll par exemple ?
:D D'ailleur, je voudrais ajouter que le probléme ne vient peut-être pas du fait que l'ordi de mon frère soit intel, mais peut-être y a t-il quelque chose à faire pour faire fonctionner tous programmes compilés sous visual c++ express sur un autre ordi où visual n'est pas installé.
Quelqu'un a une idée? :D
Ok, je vais essayer.Merci:D
Créer un installable, quand on installe un logiciel, on installe ausssi des dll dont l'executable a besoin pour fonctionner et qui fait plein d'autres choses...
Non, ça ne marche toujours pas.
Comment créer un installable?
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
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.
:D J'avais pas vu ta réponse, je vais essayer de l'installer comme tu dis.Merci
:D 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 :D.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:D
Non, ne copie surtout pas kernel32 et ntdll, ils sont déjà présent sur l'ordinateur cible (à moins que tu veuilles le crasher).
Ok, merci.
T'as peu de chance de pouvoir écraser kernel32.dll ! :aie:
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)
Salut,
Comment faire pour compiler les runtimes en static?
Merci
En mettant la bonne option dans les paramètres du projet.
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).
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!Citation:
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