0

これは不可能だとほぼ確信していますが、質問する価値があります...

VB6アプリケーションから呼び出されている.NETDLLがあります。VB6アプリは32ビットプロセスで実行されるため、DLLは同じプロセスで実行されます(任意のCPUとしてコンパイルされます)。したがって、DLLでODBCデータベースにアクセスすると、32ビットドライバーのみが使用されます。必要です(レコードの場合、DBはPervasive PSQLです)

私の問題は、アプリケーションが64ビットマシンで実行されている場合(64ビットODBCドライバーのみがインストールされている場合)に発生します。これは、使用するのに適したドライバーが見つからないためです。

したがって、.NET DLLを64ビットプロセスで強制的に実行する方法はあります(COM相互運用機能への登録が許可されていないため、x64は機能しないためコンパイルします)

32ビットドライバをインストールできるので、現時点では必ずしも問題にはなりませんが、将来的には32ビットドライバが利用できなくなる可能性があるので、ことわざになります。

4

1 に答える 1

2

32ビットプロセスが64ビットプロセスであるかのように動作する方法はありません。これを達成するために私が考えることができる最良の方法は、2つのプロセスを使用することです。

  1. 32ビットモードで実行され、DLLをロードしているVB6アプリケーション
  2. 実際にドライバにアクセスする64ビットプロセス。

さまざまなオプションを使用して、32ビットプロセスと64ビットプロセスの間で通信することができます。ここでWCFが思い浮かびます。

于 2011-03-02T17:28:28.943 に答える