2012-02-15 28 views
3

すべて、32ビットと64ビットのマネージアセンブリを混在させる

私は32ビットマシンで動作する.NET管理アプリケーションを持っています。 64bitにコンパイルして64bitマシンに移植しても問題ありません。 しかし、私は32ビットのアセンブリであるサードパーティのDLLに依存しています。 64ビットマシンで64ビットと32ビットのアセンブリを混在させて実行できますか?

ありがとうございます!

答えて

4

彼らは同じプロセスで実行されるわけではありません場合は、\の代わりに

ビンの

OS上のプロセスは、異なる "ビット数"のアセンブリをロードできません。一度選択すると、すべてのアセンブリが適合しなければなりません。通常、32ビットDLLを64ビットプロセスにロードしようとすると、またはその逆の場合にBadImageFormatExceptionが返されます。

の3つのオプション:

  1. は、問題のDLLの64ビット版(理想)を取得します。
  2. 常に32ビットで排他的に実行されます(通常は選択されたパス)。
  3. 問題のDLLを別のプロセスで実行し、IPCのようなものを使用してプロセスの境界を越えて話をしてください(極端ですが、これを一度やり直す必要がありました)。

64ビットOSで32ビットで動作することに本質的に間違っていることはありませんが、遅くなると思うという罠に陥ることはありません。

0

私自身の経験から、いいえ。

私は制御できない32ビットのiSeries COMライブラリーに依存したシステムを開発しました。問題に遭遇し、アプリケーションの32ビットバージョンをコンパイルすることによってそれらを修正しました。

すべてのCPUを対象とするのではなく、Visual Studioをx86にコンパイルするように設定してください。

また、生成されたDLLと実行ファイルは、わずかに異なる場所にあることにも注意してください。

ビン\ X86 \デバッグデバッグ

0

32ビットを実行するかどうか忘れないでくださいが遅くなることはありませんが、メモリが不足する可能性があります。

関連する問題