X32 --> X64 (Seven) - DirectX - System.BadImageFormatException [Résolu]

Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 9 oct. 2011 à 13:09 - Dernière réponse : The Meteorologist 241 Messages postés jeudi 18 janvier 2007Date d'inscription 3 novembre 2011 Dernière intervention
- 10 oct. 2011 à 20:54
Mon appli fonctionne correctement sous XP, mais depuis que j'ai ajouté la référence DirectX, elle plante sous Seven. Sous Seven 64 bits, j'ai l'erreur System.BadImageFormatException.

Je pense que cela vient de la dll DirectX (9c). Comment la rendre compatible sous 64 bits ?
Comment rendre mon appli exécutable sous XP, Seven, 32 et 64 bits ?

Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
The Meteorologist 241 Messages postés jeudi 18 janvier 2007Date d'inscription 3 novembre 2011 Dernière intervention - 9 oct. 2011 à 19:24
3
Merci
Bonsoir Fabasia,

As-tu vérifié que l'option "x86" du projet à bien été prise en compte dans Projet -> Propriétés -> Build -> Target Platform ?
Si oui, as-tu essayé de recompiler complètement ta solution avec ce paramètre ?

Simon

Merci The Meteorologist 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de The Meteorologist
Meilleure réponse
The Meteorologist 241 Messages postés jeudi 18 janvier 2007Date d'inscription 3 novembre 2011 Dernière intervention - 10 oct. 2011 à 20:54
3
Merci
Dans ce cas, pourquoi se casser la tête à utiliser des bibliothèque non-managées ? Est-ce vraiment indispensable ?

Un wrapper .NET (officel) existe :
http://funkydata.developpez.com/csharp/directx/presentation/

Il y a également des sur-couches encore plus facile à manipuler telles que XNA, WPF ...

Simon

Merci The Meteorologist 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de The Meteorologist
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 9 oct. 2011 à 15:56
0
Merci
En cherchant, j'ai trouvé cettte solution .....


The VB and C# Express products do not expose the Target property inside the development environment. You will need to carefully modify the project file using a text or XML editor.
1. Close the project and/or solution
2. Select Open File from the File menu
3. Navigate to the project directory, and highlight the project file
4. Press the Open button, the project file should open in the XML editor
5. Locate the first section and add the following line:
x86


1. Save the project file
2. Reopen the project and/or solution using Open Project/Solution from the File menu
3. Continue with development, debugging, and testing

Donc j'ai ajouté dans le fichier visual basic project file la ligne x86

:

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


x86


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


9.0.21022


.....

Mais ca plante toujours sous Seven 64 !!!!

Une solution SVP
Commenter la réponse de Fabasia
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 9 oct. 2011 à 22:37
0
Merci
Merci pour l'info. Par défaut, le menu n'apparait pas.

Sous VB 2008 Express, il faut avant tout :


1/ Menu Outils -> Options -> Cocher "Afficher les configurations avancées"

2/ Menu Générer -> Gestionnaire de configuration -> Projet / Plateform = X86

et ca marche ! Super
Commenter la réponse de Fabasia
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 9 oct. 2011 à 22:50
0
Merci
... Je me suis emballé !

En une autre erreur apparait plus tard. Quand je charge le fichier vidéo dans un module, j'ai l'erreur "LoaderLock"

La DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' tente une exécution managée dans le verrou du chargeur du système d'exploitation. N'essayez pas d'exécuter du code managé dans une fonction d'initialisation d'image ou DllMain, car cela risque d'entraîner un blocage de l'application.

Quelqu'un peut m'expliquer. Merci
Commenter la réponse de Fabasia
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 9 oct. 2011 à 23:26
0
Merci
Sous XP 32 je n'avais pas cette erreur LoaderLock.

En recherchant, j'ai vu que beaucoup désactivé cette erreur. Je l'ai fait et mon appli fonctionne enfin avec les viodéo sous Seven 64 !!!!!

Menu Deboguer -> Exceptions -> Noeud managed Debugging Assistant -> Chercher et décocher LoaderLock


Mais est-ce la bonne méthode ?
Commenter la réponse de Fabasia
The Meteorologist 241 Messages postés jeudi 18 janvier 2007Date d'inscription 3 novembre 2011 Dernière intervention - 9 oct. 2011 à 23:37
0
Merci
As-tu essayé avec un SDK DirectX 9 en 64bits ?

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5065
(Bien sûr redéfinis le TargetPlatform à x64 si tu essaies cette build)

Pour le reste cela dépasse mais compétances, je t'avouerais que n'ai jamais utilisé les API "non-managées" de DirectX.

Simon
Commenter la réponse de The Meteorologist
Fabasia 45 Messages postés mercredi 26 mars 2008Date d'inscription 17 août 2012 Dernière intervention - 10 oct. 2011 à 20:23
0
Merci
Non je n'ai pas regarder DirectX en 64 bits, car je souhaite que mon applli fonctionne sur différentes plateformes.
Néanmoins, je jeterai un oeil.
Merci
Commenter la réponse de Fabasia

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.