2009-03-27 28 views
6

3D parçanın DirectX 9 (WPF kullanarak yeterince hızlı çalışmayan çok fazla 3d) tarafından işlendiği bir WPF uygulaması geliştiriyorum.64 bit pencerelerde DirectX uygulaması

Sorun, uygulamanın "Herhangi bir CPU" ile yapılandırmasıyla ve bir kullanıcı 64 bit pencerede çalıştırıldığında, direcX kısmının (System.BadImageFormatException) çökmesiyle serbest bırakılmasıdır. Görünüşe göre directX bölümü için dahil edilen dll'ler 64 bit pencerelerde kullanılamaz.

Bu, uygulamada kullandığımız diğer bazı 3: rd bölüm dll'lerinde gerçekleşmiştir, ancak kullanıcı 64 bitlik bir windows makinesinde çalışıyorsa, çalışma zamanındaki dll'leri x64 için oluşturulmuş olanlarla değiştirerek çözdük. X64 için DirectX 9 dlls'i nerede bulabileceğimi biliyor musunuz? Eğer mevcutlarsa. İhtiyacım

olanları şunlardır:

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

onlar yoksa, sorun olabilir başka bir şekilde çözülebilir? Uygulama ClickOnce ile yayımlanan ve


beni bir Win kullanıyorum olduğunu ekleyelim konfigürasyon değişikliğinin ClickOnce (yapılandırma ClickOnce anahtarında dahildir) çalışmamaya yapmak çünkü ben x86 için yapılandırmayı değiştiremezsiniz WPF uygulaması tarafından barındırılan kısmı ve winforms kısmının sorduğum DirectX dll'lerini kullandığını. Bu, WPF: s 3D'yi kullanmaktan çok WPF'de birçok 3B kafes sunmanın çok daha iyi ve hızlı bir yoluydu. Ne yazık ki bunun yerine bu problem ortaya çıktı.

+0

bir kenara: XNA/windows kuvvetleri kendisi bile x64 32-bit modunu kullanmak - bu yüzden sadece mümkün değilse Gerçi ben gerçekten bilmiyorum ... merak ediyorum. –

+0

Sadece bir FYI, WPF 3d şeyler doğrudan X için bir sarıcıdır. Aynı şekilde hemen hemen aynıdır. Bir şeyler ver ya da al. – Tony

cevap

5

İhtiyacınız olan DLL'ler Yönetilen DirectX içindir. Ne yazık ki Microsoft artık Managed DirectX'i desteklemiyor ve onun halefi, XNA da 64bit'i desteklemiyor.

SlimDX, Managed DirectX'e alternatif bir açık kaynak kodudur ve 64bit'i destekler. Diğer seçenek ise DirectX kodunu yönetilmeyen C++ 'da yazmaktır.

+0

Yanıtladığınız için teşekkür ederiz. Bu yüzden temelde x64 üzerinde çalışabilmem için tüm 3d parçayı yeniden programlamam gerekiyor. Bu herhangi bir CPU-yapılandırması berbat ... –

+1

Özellikle de Microsoft'un yönetilen bir ortamda doğrudan x desteği, ancak, evet berbat. DirectX/WPF interop ile yapılan itme göz önüne alındığında, gelecekte daha iyi destek görmeyi umuyorum. –

+0

Başka bir seçenek xna ile karıştırma http://forums.create.msdn.com/forums/t/90094.aspx. –

0

WPF uygulamanızı yalnızca 32 bitlik bir uygulama olarak çalışacak şekilde ayarlayabilirsiniz. ClickOnce sorununuzu başka bir SO sorusu olarak gönderin. Bu muhtemelen en iyi seçeneğiniz. As

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