2009-03-27 4 views
6

Sto sviluppando un'applicazione WPF in cui la parte 3D è gestita da DirectX 9 (un sacco di 3d che non è stato eseguito abbastanza velocemente usando WPF).Applicazione DirectX su finestre a 64 bit

Il problema è che l'applicazione viene rilasciata con "Qualsiasi CPU" come configurazione e quando un utente la esegue su una finestra a 64 bit, la parte direcX si blocca (System.BadImageFormatException). Apparentemente le DLL incluse per la parte directX non sono utilizzabili su finestre a 64 bit.

Questo è accaduto con alcune altre 3: rd part dll che usiamo nella nostra applicazione ma questo abbiamo risolto cambiando le DLL in runtime a quelle create per x64 se l'utente è in esecuzione su una macchina Windows a 64 bit. Qualcuno di voi sa dove posso trovare DirectX 9 dll per x64? Se esistono davvero.

Quelli di cui ho bisogno sono:

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

Se non esistono, il problema può essere risolto in qualche altro modo? Non posso cambiare la configurazione per 86 perché l'applicazione è rilasciato tramite ClickOnce e un cambio di configurazione rendono ClickOnce smettere di lavorare (la configurazione è incluso nella chiave ClickOnce)


Lasciatemi aggiungere che la sto usando un WinForms parte ospitata dall'applicazione WPF e che la parte winforms utilizza le DLL DirectX di cui sto chiedendo informazioni. Questo era un modo molto migliore e più veloce di presentare un sacco di mesh 3D in WPF piuttosto che usare WPF: s 3D. Purtroppo questo problema si è verificato invece.

+0

Per inciso: XNA/Windows stesso le forze per utilizzare la modalità a 32 bit anche su x64 - quindi mi chiedo se, semplicemente, non è possibile ... io non lo so, però. –

+0

Solo una FYI, WPF 3d stuff è un wrapper per X diretta. Sono praticamente uno nella stessa. Dare o prendere qualcosa. – Tony

risposta

5

Le DLL necessarie per Managed DirectX. Sfortunatamente Microsoft non supporta più DirectX DirectX e il suo successore, XNA non supporta neanche 64 bit.

SlimDX è un'alternativa open source a Managed DirectX e supporta 64 bit. L'altra opzione è scrivere il codice DirectX in C++ non gestito.

+0

Grazie per aver risposto. Quindi, in pratica, devo riprogrammare l'intera parte 3d se voglio che sia in grado di funzionare su x64. Questa configurazione della CPU fa schifo ... –

+1

Beh, in particolare il supporto di Microsofts di x diretta in un ambiente gestito fa schifo, ma sì. Data la spinta con l'interoperabilità DirectX/WPF spero di vedere un supporto migliore in futuro. –

+0

Un'altra opzione http://forums.create.msdn.com/forums/t/90094.aspx che si mescola con xna. –

0

È possibile impostare l'applicazione WPF in modo che venga eseguita solo come app a 32 bit. Pubblica il tuo problema ClickOnce come un'altra domanda SO. Questa è probabilmente la tua migliore opzione.

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