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

sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 7 déc. 2010 à 14:48 - Dernière réponse : sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention
- 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

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 déc. 2010 à 15:28
+3
Utile
Ce n'est pas c'est , sans espace !!!!




[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 7 déc. 2010 à 17:18
0
Utile
- 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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 8 déc. 2010 à 08:59
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 8 déc. 2010 à 09:15
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 8 déc. 2010 à 13:56
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 8 déc. 2010 à 16:07
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 8 déc. 2010 à 16:58
0
Utile
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
constantio 7 Messages postés samedi 27 mars 2010Date d'inscription 28 avril 2012 Dernière intervention - 9 déc. 2010 à 07:34
0
Utile
j'ai eu le meme problem peu etre c'est un proble de compatibiliter
Commenter la réponse de constantio
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 9 déc. 2010 à 09:16
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 déc. 2010 à 09:30
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 9 déc. 2010 à 15:11
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 9 déc. 2010 à 15:45
0
Utile
Oki, désolée.
Je teste et je te tiens au courant.
Commenter la réponse de sigrid1983
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 9 déc. 2010 à 16:12
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 déc. 2010 à 16:31
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 9 déc. 2010 à 17:08
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 déc. 2010 à 17:31
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 10 déc. 2010 à 14:11
0
Utile
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
sigrid1983 45 Messages postés mardi 14 avril 2009Date d'inscription 29 mars 2012 Dernière intervention - 13 déc. 2010 à 14:40
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.