2

最近、64 ビット OS マシンに移行しました。C# .net で記述された私のアプリケーションでは、dll のコードが Microsoft.Jet.OLEDB.4.0 ドライバーを使用して dbf ファイルを開こうとしています。OLEDB は 64 ビットではサポートされていないことがわかりました。 このスレ参照

新しい ACE.OLEDB.12.0 をインストールしようとしました。最初に 32 ビット バージョンのエンジンをインストールしましたが、認識されず、「Microsoft.ACE.OLEDB.12.0 プロバイダーがローカル コンピューターに登録されていません」というエラー メッセージが表示されました。

そこで、ここから ACE.OLEDB の 64 ビット版をインストールしようとしました。

他の Office 製品を 32 ビット Office 製品としてインストールしているため、エラーが発生しています。

この問題を解決するにはどうすればよいですか?

PS: ソリューションを x86 プラットフォームにコンパイルするように設定しようとしました。BadImageFormatException をスローしました。

4

1 に答える 1

1

OLEDB が 64 ビットでサポートされていないということは、OLEDB を 64 ビット プロセスにロードできないことを意味しますが、プロセスが 32 ビットの場合、64 ビット マシンで問題なく動作します。Windows には、32 ビット アプリケーションを 64 ビット マシンで実行するための非常に広範な互換性レイヤーがあります。

アプリケーションで 64 ビット機能を必要としない場合 (PS 行が示唆しているように)、x86 にコンパイルして 32 ビット Jet ドライバーを使用するように設定する必要があります。これは、32 ビット システムと 64 ビット システムの両方で正常に動作するはずです。

BadImageFormatException では、64 ビット dll を 32 ビット プロセスにロードしようとした可能性があります。

于 2011-01-20T16:46:35.567 に答える