我正在开发一个WPF应用程序,其中3D部分由DirectX 9处理(很多3D使用WPF运行得不够快)。
问题是应用程序是以“Any CPU”作为配置发布的,当用户在64位窗口上运行时,direcX部分崩溃(System.BadImageFormatException)。显然,directX部分包含的dll在64位窗口上不可用。
我们在应用程序中使用了其他一些3:rd部分dll,但是如果用户在64位Windows机器上运行,我们通过将运行时的dll更改为为x64构建的dll来解决这个问题。你们中的任何人都知道我在哪里可以找到x64的DirectX 9 dll吗?如果它们存在的话。
我需要的是:
如果它们不存在,问题可以通过其他方式解决吗?我无法将配置更改为x86,因为应用程序是通过ClickOnce发布的,更改配置使ClickOnce停止工作(配置包含在ClickOnce键中)
让我补充一点,我正在使用由WPF应用程序托管的Winforms部分,而winforms部分正在使用我询问的DirectX dll。这是在WPF中呈现大量3D网格比使用WPF:3D更好更快的方式。不幸的是,这个问题发生了。
答案 0 :(得分:5)
您需要的DLL适用于Managed DirectX。不幸的是,微软不再支持Managed DirectX,而且它是继承者,XNA也不支持64位。
SlimDX是Managed DirectX的开源替代品,它支持64位。另一种选择是在非托管C ++中编写DirectX代码。
答案 1 :(得分:0)
您可以将WPF应用程序设置为仅作为32位应用程序运行。将您的ClickOnce问题发布为另一个SO问题。这可能是你最好的选择。
Project Properties -> Build -> Platform Target -> x86