6

3DパーツがDirectX9で処理されるWPFアプリケーションを開発しています(WPFを使用すると十分な速度で実行されなかった多くの3D)。

問題は、アプリケーションが「任意のCPU」を構成としてリリースされ、ユーザーが64ビットウィンドウで実行すると、direcX部分がクラッシュすることです(System.BadImageFormatException)。どうやら、directX部分に含まれているdllは64ビットウィンドウでは使用できません。

これは、アプリケーションで使用する他の3番目の部分のdllで発生しましたが、ユーザーが64ビットWindowsマシンで実行している場合は、実行時にdllをx64用に構築されたdllに変更することで解決しました。x64用のDirectX9dllがどこにあるか知っている人はいますか?それらが存在する場合。

私が必要なものは次のとおりです。

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

それらが存在しない場合、他の方法で問題を解決できますか?アプリケーションがClickOnceを介してリリースされ、構成を変更するとClickOnceが機能しなくなるため、構成をx86に変更できません(構成はClickOnceキーに含まれています)


私はWPFアプリケーションによってホストされているWinformsパーツを使用しており、winformsパーツは私が求めているDirectXdllを使用していることを付け加えておきます。これは、WPF:s 3Dを使用するよりも、WPFで多くの3Dメッシュを表示するためのはるかに優れた高速な方法でした。残念ながら、代わりにこの問題が発生しました。

4

2 に答える 2

5

必要な DLL は Managed DirectX 用です。残念ながら、Microsoft はマネージド DirectX をサポートしなくなり、その後継である XNA も 64 ビットをサポートしていません。

SlimDX は Managed DirectX に代わるオープン ソースであり、64 ビットをサポートします。もう 1 つのオプションは、アンマネージ 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 に答える