2009-03-27 10 views
6

Estoy desarrollando una aplicación WPF donde la parte 3D es manejada por DirectX 9 (una gran cantidad de 3D que no se ejecutó lo suficientemente rápido usando WPF).Aplicación de DirectX en ventanas de 64 bits

El problema es que la aplicación se lanza con "Cualquier CPU" como configuración y cuando un usuario la ejecuta en una ventana de 64 bits, la parte direcX falla (System.BadImageFormatException). Aparentemente los dlls incluidos para la parte de directX no se pueden usar en una ventana de 64 bits.

Esto ha sucedido con algunas otras 3 partes dlls que utilizamos en nuestra aplicación, pero esto lo hemos solucionado cambiando los dlls en tiempo de ejecución a los creados para x64 si el usuario está ejecutando en una máquina Windows de 64 bits. ¿Alguno de ustedes sabe dónde puedo encontrar DirectX 9 dlls para x64? Si existen en absoluto.

Los que yo necesito son:

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

Si no existen, el problema puede ser resuelto de alguna otra manera? No puedo cambiar la configuración a 86 porque la aplicación se libera a través de ClickOnce y un cambio de configuración hacen ClickOnce deje de funcionar (la configuración está incluido en la clave de ClickOnce)


quiero añadir que la estoy usando un Winforms parte alojada por la aplicación WPF y que la parte de winforms está utilizando los dlls de DirectX sobre los que estoy preguntando. Esta era una manera mucho mejor y más rápida de presentar muchas mallas 3D en WPF que utilizar WPF: s 3D. Lamentablemente, este problema ocurrió en su lugar.

+0

Como acotación al margen: XNA/Windows mismo obliga a utilizar el modo de 32 bits, incluso en x64 - por lo que se preguntan si simplemente no es posible ... No se sabe muy bien, sin embargo. –

+0

Solo un FYI, WPF en 3D es un envoltorio para X directo. Son prácticamente uno en lo mismo. Dar o tomar algunas cosas. – Tony

Respuesta

5

Las DLL que necesita son para Managed DirectX. Desafortunadamente Microsoft ya no es compatible con Managed DirectX y su sucesor, XNA tampoco es compatible con 64 bits.

SlimDX es una alternativa de código abierto para Managed DirectX, y es compatible con 64 bits. La otra opción es escribir el código de DirectX en C++ no administrado.

+0

Gracias por responder. Así que, básicamente, tengo que volver a programar toda la parte 3d si quiero que pueda ejecutarse en x64. Esta configuración de cualquier CPU es una mierda ... –

+1

Bueno, específicamente el soporte de Microsoft de x directo en un entorno administrado es una mierda, pero sí. Dado el impulso con la interoperabilidad DirectX/WPF, espero ver un mejor soporte en el futuro. –

+0

Otra opción http://forums.create.msdn.com/forums/t/90094.aspx mezclar con xna. –

0

Puede configurar su aplicación WPF para que se ejecute solo como una aplicación de 32 bits. Publique su problema ClickOnce como otra pregunta SO. Esta es probablemente su mejor opción.

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

Cuestiones relacionadas