1

64 ビット プロセスで 32 ビット相互運用 dll を使用することについて、少し混乱しています。8TB のメモリにアクセスするために、アプリケーションを 64 ビット用にビルドしますが、残念ながら、32 ビット モードでビルドされた統計的相互運用ライブラリを使用しています。このライブラリのソースがないため、64 ビットに再構築できません。

この記事では IPC (WCF など) を使用してアプリと通信する 64 ビット サロゲート プロセスを作成することを提案します。ここでは、Runtime Callable Wrapper ( RCW )を使用するソリューションを見つけることができます。どちらが良いですか?代理プロセスの実装を開始しましたが、今日、自分のニーズに適しているかどうかわからない2番目のソリューションを見つけました。

この統計的相互運用ライブラリには、何百ものインターフェイスとクラスがあることに言及する必要があります。それでも私はそれらのいくつかを必要としています。それらのいくつかをエンドポイントとしてホストする WCF サービスの作成を開始しましたが、多くのコード/作業が必要になるようです。

2 番目の方法 (RCW) を使用して相互運用 dll を使用できますか?

よろしく、ヨトベク

4

1 に答える 1

4

まあ、「より良い」は負荷の高い用語です。しかし、そうです、COM サロゲートを使用すると、これを非常に簡単に実行できます。システム サロゲートを使用できる場合、ライブラリが適切に設計されていれば、ほとんどの場合、確率は高くなります。次に、レジストリ キーを 64 ビット キーに複製し、それらのいくつかを微調整してサロゲートを使用するだけで済みます。あなたはどんなコードでも書いています。MSDN の開始ページはこちらです。

ライブラリがクロス アパートメント マーシャリングをサポートしていない場合はうまくいきません。そうなるかどうかわからない場合は、ワーカー スレッドからライブラリ関数を呼び出してみてください。それがうまくいかない場合は、気にしないでください。また、このライブラリがバグをクラッシュさせる傾向がある場合、「より良い」ものを失うことになります。これは、プロセス外のシナリオでは常にうまくいきません。速度が問題になる可能性があり、アウトプロセス呼び出しには多くのオーバーヘッドがあります。しかし、あなたはどちらにしてもそれで立ち往生しています。ライブラリの所有者にサポートを依頼することで、SO の推測ではなく適切な回答を得ることができます。

于 2013-01-01T21:55:20.593 に答える