X32 --> X64 (Seven) - DirectX - System.BadImageFormatException

Résolu
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012 - 9 oct. 2011 à 13:09
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 - 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

8 réponses

The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
9 oct. 2011 à 19:24
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
3
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
10 oct. 2011 à 20:54
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
3
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012
9 oct. 2011 à 15:56
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
0
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012
9 oct. 2011 à 22:37
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012
9 oct. 2011 à 22:50
... 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
0
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012
9 oct. 2011 à 23:26
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 ?
0
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
9 oct. 2011 à 23:37
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
0
Fabasia Messages postés 45 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 17 août 2012
10 oct. 2011 à 20:23
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
0
Rejoignez-nous