babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
17 mai 2011 à 17:46
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
18 mai 2011 à 09:07
Bonjour,
Pourriez-vous m'éclairer sur le gestionnaire de configuration (ou me proposer un lien) ?
Voilà, je suis sous VS2005 et je viens de passer sous Win7 x64(avant j'étais sous Vista x86).
Mes programmes se connectent à une base Oracle via ODP.NET.
Maintenant, pour faire fonctionner mes programmes sur des plateformes x86 (compilés sur une machine 64bits), j'ai dû passer la config de VS de "Any CPU" à X86.
Ça ne me choque pas puisque je lui demande de fonctionner sur le 32bits. Par contre, par curiosité, j'ai compilé un programme (qui n'utilise pas Oracle) avec la config "Any CPU" sur mon 64 bits et celui-ci a fonctionné sur un 32 bits. Pourquoi ça marche ?
Je n'ai vraiment pas compris la philosophie du gestionnaire de configuration...
Slts
DT
A voir également:
Gestionnaire de configuration sql server introuvable
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 18 mai 2011 à 08:53
Il faudra de toute façon que tu installe le package 32 bits sur une plateforme 32 bits.
Ensuite, sur une plateforme 64 bits, soit tu compile en x64 ou Any CPU, dans ce cas c'est le package 64 bits qui devra être installé, soit tu force la compilation x86, dans ce cas là tu devras installer le package 32 bits.
Sur 32 bits, t'as pas le choix, sur 64 bits c'est le mode de compilation de ton appli qui t'impose le package à installer.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 17 mai 2011 à 18:21
Habituellement c'est sur des plateformes 64 bits que l'on rencontre des problèmes.
x86 force le mode d’exécution en 32 bits quelque soit la plateforme, même sur une plateforme 64 bits
x64 force le mode d’exécution en 64 bits quelque soit la plateforme, même sur une plateforme 32 bits (et dans ce cas là, ça ne peut pas marcher)
Any CPU utilisera le mode d’exécution en fonction de la plateforme. Sur une plateforme 32 bits, l’exécutable fonctionnera en 32 bits, mais sur une plateforme 64 bits, le même executable (sans recompilation) fonctionnera en 64 bits.
LE problème se pose généralement avec les dll tierce et autres composants que l’exécutable utilise. Ceux-ci sont appelés dans le même mode d’exécution que l’exécutable. Il faut donc que ces composants, tout du oins leur version installé sur la cible soient compatible avec le mode d’exécution demandé.
Ainsi par exemple, un logiciel qui accède à une base de données Accès version 2003 ou inférieure doit obligatoirement être compilé en x32, parce que, pour accéder à la base le logiciel utilisera le moteur Microsoft Jet 4.0. Celui-ci n'existe pas en version 64 bits. Le logiciel ne pourra donc pas l’appeler en mode x64 et donc par définition ne doit donc pas fonctionner en x64.
Dans ton cas, le logiciel, qu'il soit compilé en Any CPU, ou en x86 doit fonctionner en 32 bits sur une plateforme 32 bits. Ton problème est un peu surprenant dans ce sens.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015 18 mai 2011 à 08:30
Merci pour cette réponse. C'est plus clair maintenant.
Pour répondre à ton interrogation, Pour installer ODP.NET (client Oracle), il faut choisir entre un package d'install 32 ou 64.
Le client 64 ne fonctionne pas sur un systeme 32.
Le client 32 lui fonctionne sur les deux plateformes mais si je compile en "Any CPU", j'ai l'erreur "Impossible de charger le fichier ou l'assembly 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' ou une de ses dépendances. Le fichier spécifié est introuvable."
Alors que si je compile en X86 pas de souci
DT
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015 18 mai 2011 à 09:07
je te rejoins sur ton dernier post,
En regardant de plus pres l'erreur, je me suis rendu compte que lorsque j'exécuté en "Any CPU", il allait chercher la DLL Oracle en 64bits. Or je n'ai pas installé le package oracle 64bits. ce comportement ne me choque pas car ma machine est une 64bits - si j'ai bien compris-)...
j'ai donc décidé d'installer en plus du package 32bits le package 64bits. j'ai aussi recompilé la DLL en référence de mon projet qui avait été compilé en x86 et là, mon programme a bien fonctionné en "Any CPU" ! Il fonctionne sur un x64 et sur un x86 !
Donc en conclusion : si j'ai tout bien assimilé : je profiterai du 64 bits sur une machine x64 et mon programme fonctionnera aussi en 32bits