2009-03-27 40 views
6

Tôi đang phát triển một ứng dụng WPF nơi phần 3D được xử lý bởi DirectX 9 (rất nhiều 3d không chạy đủ nhanh bằng cách sử dụng WPF).Ứng dụng DirectX trên cửa sổ 64 bit

Vấn đề là ứng dụng được phát hành với "CPU bất kỳ" làm cấu hình và khi người dùng chạy nó trên cửa sổ 64 bit, phần direcX gặp sự cố (System.BadImageFormatException). Rõ ràng các dll bao gồm cho phần DirectX là không thể sử dụng trên một cửa sổ 64 bit.

Điều này đã xảy ra với một số phần 3 khác mà chúng tôi sử dụng trong ứng dụng của chúng tôi nhưng chúng tôi đã giải quyết bằng cách thay đổi dll trong thời gian chạy sang những tệp được xây dựng cho x64 nếu người dùng đang chạy trên máy tính 64 bit. Có ai trong số các bạn biết tôi có thể tìm thấy file dll DirectX 9 cho x64 ở đâu không? Nếu chúng tồn tại chút nào.

Những cái tôi cần là:

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

Nếu họ không tồn tại, có thể vấn đề được giải quyết theo một cách khác? Tôi không thể thay đổi cấu hình để x86 vì ứng dụng được phát hành thông qua ClickOnce và một sự thay đổi về cấu hình làm ClickOnce ngừng làm việc (cấu hình được bao gồm trong khóa ClickOnce)


Hãy để tôi thêm rằng tôi đang sử dụng một Winforms một phần được lưu trữ bởi ứng dụng WPF và phần winforms đang sử dụng các tệp dll DirectX mà tôi yêu cầu. Đây là một cách tốt hơn và nhanh hơn để trình bày rất nhiều mắt lưới 3D trong WPF hơn là sử dụng 3D của WPF. Rất tiếc, sự cố này đã xảy ra.

+0

Là một sang một bên: XNA/cửa sổ lực lượng bản thân để sử dụng chế độ 32-bit ngay cả trên x64 - vì vậy tôi tự hỏi, nếu nó chỉ đơn giản là không thể ... Tôi thật sự không biết, mặc dù. –

+0

Chỉ cần một FYI, WPF 3d thứ là một wrapper cho X. trực tiếp Họ là khá nhiều trong cùng một. Đưa ra hoặc lấy một số thứ. – Tony

Trả lời

5

Dll bạn cần là dành cho Managed DirectX. Thật không may Microsoft không còn hỗ trợ Managed DirectX và kế thừa của nó nữa, XNA cũng không hỗ trợ 64bit.

SlimDX là một giải pháp thay thế mã nguồn mở đối với Managed DirectX và hỗ trợ 64 bit. Tùy chọn khác là viết mã DirectX trong C++ không được quản lý.

+0

Cảm ơn bạn đã trả lời. Vì vậy, về cơ bản tôi phải tái lập trình toàn bộ phần 3D nếu tôi muốn nó có thể chạy trên x64. Điều này bất kỳ cấu hình CPU sucks ... –

+1

Vâng đặc biệt Microsofts hỗ trợ của x trực tiếp trong một môi trường quản lý hút, nhưng yeah. Với sự thúc đẩy với InterX/WPF interop tôi hy vọng sẽ thấy sự hỗ trợ tốt hơn trong tương lai. –

+0

Một tùy chọn khác http://forums.create.msdn.com/forums/t/90094.aspx trộn với xna. –

0

Bạn có thể đặt ứng dụng WPF của mình chỉ chạy dưới dạng ứng dụng 32 bit. Đăng sự cố ClickOnce của bạn dưới dạng một câu hỏi SO khác. Đây có lẽ là lựa chọn tốt nhất của bạn.

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

Các vấn đề liên quan