32 ビットから 64 ビットに移行しようとしているアプリケーションがあります。これは、x64 フラグを使用してコンパイルされた .NET です。ただし、32 ビット用にコンパイルされた FORTRAN 90 で記述された多数の DLL があります。FORTRAN DLL の関数は非常に単純です。データを入力し、データを引き出します。どんな状態でもない。また、そこに多くの時間を費やすことはなく、合計でおそらく 3% ですが、それが実行する計算ロジックは非常に貴重です。
どうにかして 64 ビット コードから 32 ビット DLL を呼び出すことはできますか? MSDN は、できないと示唆しています。簡単なハッキングを行い、これを確認しました。すべてが無効なエントリ ポイント例外をスローします。これまでに見つけた唯一の解決策は、すべての 32 ビット DLL 関数に対して COM+ ラッパーを作成し、64 ビット プロセスから COM を呼び出すことです。これはかなりの頭痛の種のようです。プロセスを WoW エミュレーションで実行することもできますが、メモリの上限は増加せず、約 1.6 GB に制限されます。
64 ビット CLR プロセスから 32 ビット DLL を呼び出す他の方法はありますか?