Problème d'execution de mon application sur un ordi 64 bits [Résolu]

Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
- - Dernière réponse : sigrid1983
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
- 13 déc. 2010 à 14:40
Bonjour à tous.

Voilà, j'ai créé en vb.net une application windows (.exe).
Elle fonctionne très bien sur des ordis en 32 bits, mais ne fonctionne pas sur des ordis en 64 bits.
Ne voyant pas du tout d'où cela pourrait venir, y-a-t-il quelqu'un qui pourrait m'aider?

D'avance merci.
Afficher la suite 

18 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
3
Merci
Ce n'est pas c'est , sans espace !!!!




[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 130 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
- Ton application utilise des bases de données type Access ou Excel ou ..., bref utilise le moteur Microsoft Jet 4.0.

- Ton application utilise des composants, api, dll, tiers d'un autre éditeur.

Si oui,
Dans le premier cas, tu dois obligatoirement forcer le mode 32 bits uniquement à la compilation (voir dans les propriétés du projet) au lieu du mode "As Any" par défaut. Le moteur MS Jet 4.0 n'existe pas en 64 bits et n'existera jamais.

Dans le second cas, tu dois vérifier que la version 64bits des composants utilisés est installée sur les machines 64 bits. Ou sinon, tu dois de même forcer la compilation en mode 32 bits uniquement


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Salut Casy

Effectivement mon application utilise des bases de données Acces (.mdb).
Je vais de ce pas regarder les propriétés du projet !!
Merci
Commenter la réponse de sigrid1983
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Casy,

je viens de regarder les propriétés du projet, à l'onglet compilation, mais je n'ai rien trouvé qui ressemble à "As Any" qui selon toi devrait être coché par défaut.
J'utilise visual basic 2008. J'ai ouvert le code de mon projet "monprojet.vbproj", j'ai ensuite cliqué sur Propriétés (dans l'espace Projet de la barre de menu en haut, à côté de "Fichier, Edition,...").
Dans l'onglet "Compilation", il y a des options à activer ou non.
Par exemple: option strict, option infer, ... et j'ai juste le choix entre On ou Off.
J'ai regardé les autres onglets mais en vain.

Pourrais-tu me guider stp?
D'avance merci.
Commenter la réponse de sigrid1983
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Dans les propriétés du projet, onglet Compiler, il faut aller dans les option avancées de compilation. Normalement tu dois avoir un paramètre qui s'appelle Unité centrale cible

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Voilà ce que j'aperçois dans propriétés de compilation:



Je ne trouve pas de paramètre Unité centrale cible
Commenter la réponse de sigrid1983
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Effectivement, tu dois probablement être en version Express. Il semblerait que les versions express n'ont pas toutes les options accessibles.

Le plus simple est de directement éditer le fichier projet.

Pour cela il faut fermer le projet et la solution.
Je en saurait trop te conseiller de faire une sauvegarde du fichier .vbproj avant modification.

Ensuite il faut ouvrir le fichier .vbproj ave un éditeur de texte style Notepad par exemple (si tu veux le faire avec l'ide de vb, il faut passer par le menu Fichier et choisir "Ouvrir un fichier"
C'est un fichier XML.

Il faut rechercher la première section et rajouter (modifier si elle existe déjà) la propriété comme ceci :

  ...........
  x86





Si tu as d'autres sections PropertyGroup, tu peux éventuellement y faire la même modif.

Tu enregistre et ferme.
Il ne te reste plus qu'à réouvrir ton projet avec VB.
Par sécurité, tu vas dans le menu Générer, et tu choisis Nettoyer la solution (ou Nettoyer le projet peut-être dans la version Express) puis Regénérer la solution, pour que la modification soit bien prise en compte.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
7
Date d'inscription
samedi 27 mars 2010
Statut
Membre
Dernière intervention
28 avril 2012
0
Merci
j'ai eu le meme problem peu etre c'est un proble de compatibiliter
Commenter la réponse de constantio
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Salut Casy

Avant d'utiliser ta solution et de faire les modifications, je préfère te montrer le code xml de mon vbproj:


......
AnyCPU


......



Dois-je ajouter la ligne "Plateform Target" (cf ton message précédent)?
Dois-je supprimer cette ligne ("Plateform Condition"), ou la modifier?

Peur de faire une bétise, je souhaiterais ton avis.

Merci
Commenter la réponse de sigrid1983
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Non, il faut rajouter le ligne

Mais fais-toi une sauvegarde du fichier avant modification, comme ça tu pourras revenir en arrière en cas de problème

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Salut Casy,

Désolée de t'embêter encore.

J'ai fait exactement ce que tu m'as dit , mais il semble qu'il doit y avoir une subtilité dans l'écriture de la ligne de code que je dois ajouter.
En effet, lorsque je veux ouvrir de nouveau mon vbproj avec vb, j'ai un message d'erreur concernant des caractères à ajouter.
Le truc c'est que je suis vraiment débutante, j'apprend sur le tas, donc je me tourne encore vers tes lumières.

J'aimerais tellement que ça fonctionne, je sens qu'on s'approche de la solution!!

Voici une partie du code XML de mon vbproj:

------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>


<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
AnyCPU


9.0.21022


<SchemaVersion>2.0</SchemaVersion>
{3C537CB5-498A-4BDF-8B8B-C082A880C429}


<OutputType>WinExe</OutputType>
<StartupObject>MonDossier_dev.My.MyApplication</StartupObject>
<RootNamespace>MonDossier_dev</RootNamespace>
MonProjet
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<OptionExplicit>On</OptionExplicit>
<OptionCompare>Binary</OptionCompare>
<OptionStrict>Off</OptionStrict>
<OptionInfer>Off</OptionInfer>
My Project\app.manifest
false
publish\


true
Disk
false
Foreground
7
Days
false
false
<MapFileExtensions>true</MapFileExtensions>
0
1.0.0.%2a
false
true
x86

(la ligne dont tu m'as parlée)



---------------------------------------------------------

Apparemment, d'après les messages d'erreur, il faudrait mettre un truc du style: (attention la ligne de code ci-dessous n'est pas à 100% correcte)

x86




Si tu pouvais encore m'aider ce serait super
Commenter la réponse de sigrid1983
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Oki, désolée.
Je teste et je te tiens au courant.
Commenter la réponse de sigrid1983
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Ayé j'ai corrigé la ligne de code.
J'ai pu regénérer le projet, puis j'ai testé le .EXE sur une machine 64bits.
J'ai eu le même message d'erreur qu'avant mon premier post, qui dit un truc du genre: "Microsoft OleDb 4.0 provider n'est pas dispo sur cette local machine".
J'y comprend rien !!!
Commenter la réponse de sigrid1983
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
As-tu fait les opérations de nettoyage et de régénération du projet ?
As-tu bien pris le nouvel executable généré suite à ces changements, et pas un ancien ?


Vérifie que le moteur est bien installé (tu dois avoir un fichier MSJet40.dll dans le dossier Windows\syswow64\ )

Je vérifie s'il n'y a pas d'autres points en regarder.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Le moteur MSJet40.dll est bien présent dans le dossier Windows\syswos\64

Pour le nettoyage je n'ai pas trouvé où celà se situe ds vb express, donc je n'ai pas pu le faire.
Je n'avais qu'un .exe, je suppose que chaque fois que je modifie et que j'enregistre cela écrase l'ancien.
Commenter la réponse de sigrid1983
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Dans la partie Explorateur de projet, si tu fait un click droit sur ton projet, tu devrais avoir les commandes Générer, Regénérer, Nettoyer, Publier, .....

Tu commence par faire Nettoyer, puis ensuite tu fais Régénérer. Cela va te recréer l'exécutable.

Pour savoir si c'est le bon executable, tu regarde sa date de modification. Elle doit correspondre à quelques secondes près au moment ou tu as cliquer sur Regénérer (ou Générer suivant le cas). Si elle est plus ancienne, tu as une ancienne version de l'exécutable (de lancer l'exécutable depuis l'IDE provoque une génération préalable s'il y a eu des modifications et donc aussi une mise à jour de sa date de modification).


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Salut,

Après click-droit sur mon projet, j'ai trouvé la commande Regénérer ( à défaut de Nettoyer).
J'ai vérifié que l'exécutable soit bien le dernier, mais cela ne fonctionne toujours pas.

Dans mon code source, je demande à mon programme de chercher des valeurs dans des fichiers .mdb
Pour cela j'ouvre une connection à la base de données et c'est là que j'utilise Microsoft OleDb 4.0
Je ne comprend pas pourquoi cela ne serait pas compatible avec un 64 bits, alors qu'Acces existe bien pour ce genre d'ordi.

Je poursuis mes recherches, mais si tu as encore une idée pour m'aider elle est la bienvenue.
Là, franchement je sèche! Je sens qu'on est proche de la résolution et qu'elle ne tient qu'à la modif d'un petit truc.
Commenter la réponse de sigrid1983
Messages postés
45
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
29 mars 2012
1
0
Merci
Salut Casy, Salut à tous,

Ce post pour dire un grand merci à Casy qui m'a été d'un grand secours.
Grâce à toi mon programme fonctionne sur un ordi 64 bits.
La ligne de code xml x86

est la solution à mon problème.
J'ai fait ma blonde, ça ne marchait pas jusque là à cause d'une faute de frappe de ma part! Mea Culpa!!! et mes excuses à Casy de l'avoir embêter un peu trop longtemps.

MERCI ENCORE !!!!
Commenter la réponse de sigrid1983