2009-03-27 6 views
6

Je développe une application WPF où la partie 3D est gérée par DirectX 9 (beaucoup de 3D ne fonctionnait pas assez vite avec WPF). Le problème est que l'application est libérée avec "Any CPU" comme configuration et quand un utilisateur l'exécute sur une fenêtre de 64 bits, la partie direcX se bloque (System.BadImageFormatException). Apparemment, les dll inclus pour la partie directX ne sont pas utilisables sur une fenêtre de 64 bits. Cela s'est produit avec d'autres DLL tierces que nous utilisons dans notre application, mais nous avons résolu cela en changeant les dlls en runtime pour ceux construits pour x64 si l'utilisateur est exécuté sur une machine Windows 64 bits. Est-ce que l'un d'entre vous sait où je peux trouver des dll DirectX 9 pour x64? Si elles existent du tout.Application DirectX sur les fenêtres 64 bits

Ceux dont j'ai besoin sont:

  • Microsoft.DirectX.Direct3D
  • Microsoft.DirectX.Direct3DX
  • Microsoft.DirectX

Si elles n'existent pas, le problème peut être résolu d'une autre manière? Je ne peux pas changer la configuration x86 car l'application est libérée par ClickOnce et un changement de configuration font ClickOnce arrêter de travailler (la configuration est inclus dans la clé ClickOnce)


Permettez-moi d'ajouter que le j'utilise un Winforms partie hébergée par l'application WPF et que la partie winforms utilise les dlls DirectX dont je parle. C'était une manière beaucoup mieux et plus rapide de présenter beaucoup de maillages 3D dans WPF que d'utiliser WPF: s 3D. Malheureusement, ce problème est survenu à la place.

+0

En aparté: forces XNA/Windows lui-même d'utiliser le mode 32 bits, même sur x64 - donc je me demande s'il est tout simplement pas possible ... Je ne sais pas vraiment, cependant. –

+0

Juste un FYI, WPF 3d est un emballage pour direct X. Ils sont à peu près un dans le même. Donnez ou prenez des choses. – Tony

Répondre

5

Les DLL dont vous avez besoin sont pour Managed DirectX. Malheureusement, Microsoft ne prend plus en charge Managed DirectX et son successeur, XNA ne supporte pas 64bit non plus. SlimDX est une alternative open source à Managed DirectX, et il prend en charge 64bit. L'autre option consiste à écrire le code DirectX dans C++ non géré.

+0

Merci d'avoir répondu. Donc, fondamentalement, je dois reprogrammer la totalité de la partie 3d si je veux qu'elle fonctionne sur x64. Cette configuration Any-CPU suce ... –

+1

Eh bien, Microsofts spécifiquement support de x direct dans un environnement géré aspire, mais oui. Compte tenu de la poussée avec DirectX/WPF interop j'espère voir un meilleur soutien à l'avenir. –

+0

Une autre option http://forums.create.msdn.com/forums/t/90094.aspx se mélangeant avec xna. –

0

Vous pouvez configurer votre application WPF pour qu'elle s'exécute uniquement en tant qu'application 32 bits. Postez votre problème ClickOnce sous une autre question SO. C'est probablement votre meilleure option.

Project Properties -> Build -> Platform Target -> x86

Questions connexes