6

我正在开发一个 WPF 应用程序,其中 3D 部分由 DirectX 9 处理(很多 3d 使用 WPF 运行速度不够快)。

问题是应用程序以“任何 CPU”作为配置发布,当用户在 64 位窗口上运行它时,direcX 部分崩溃(System.BadImageFormatException)。显然,directX 部分包含的 dll 在 64 位窗口上不可用。

这发生在我们在应用程序中使用的其他一些 3:rd 部分 dll 中,但是如果用户在 64 位 Windows 机器上运行,我们通过将运行时中的 dll 更改为为 x64 构建的 dll 解决了这个问题。你们有谁知道我在哪里可以找到 x64 的 DirectX 9 dll 吗?如果它们存在的话。

我需要的是:

  • Microsoft.DirectX.Direct3D
  • Microsoft.DirectX.Direct3DX
  • 微软.DirectX

如果它们不存在,是否可以通过其他方式解决问题?我无法将配置更改为 x86,因为应用程序是通过 ClickOnce 发布的,并且配置更改使 ClickOnce 停止工作(配置包含在 ClickOnce 键中)


让我补充一点,我正在使用由 WPF 应用程序托管的 Winforms 部分,并且 winforms 部分正在使用我所询问的 DirectX dll。与使用 WPF:s 3D 相比,这是一种在 WPF 中呈现大量 3D 网格的更好更快的方法。不幸的是,这个问题反而发生了。

4

2 回答 2

5

您需要的 DLL 用于托管 DirectX。不幸的是,微软不再支持托管 DirectX 和它的继任者,XNA 也不支持 64 位。

SlimDX 是托管 DirectX 的开源替代品,它支持 64 位。另一种选择是用非托管 C++ 编写 DirectX 代码。

于 2009-03-27T11:02:38.237 回答
0

您可以将 WPF 应用程序设置为仅作为 32 位应用程序运行。将您的 ClickOnce 问题发布为另一个 SO 问题。这可能是您最好的选择。

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

于 2012-04-26T18:03:31.980 回答