2011-01-20 16 views
2

最近64ビットOSマシンに移動しました。 C#.netで書かれた私のアプリケーションでは、DLLのコードがMicrosoft.Jet.OLEDB.4.0ドライバを使用してdbfファイルを開こうとしています。 OLEDBが64ビットではサポートされていないことがわかりました。 Refer to this thread64ビットマシンのdbfファイルのJet.OLEDB.4.0ドライバの置換

新しいACE.OLEDB.12.0をインストールしようとしました。まず、32ビットバージョンのエンジンをインストールしました。このバージョンは認識されず、このエラーメッセージ "Microsoft.ACE.OLEDB.12.0プロバイダーはローカルマシンに登録されていません"を受信しました。

は、だから、私は私の他のオフィス製品は、32ビット版のOffice製品としてインストールされているとして今、私はエラーに直面しています

hereから、ACE.OLEDBの64ビット版をインストールしようとした

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

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

答えて

1

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

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

BadImageFormatExceptionでは、おそらく、64ビットdllを32ビットプロセスにロードしようとしました。

+0

BadImageFormatExceptionの番号。 x86にコンパイルするためにアプリケーションをダウングレードし、WCFサービスを開始しようとしました。このエラーを投げているプロジェクトが1つあります。 – franklins

+0

WCFの仕組みがわからない、IISなどの別のプロセスによってサービスがホストされていますか?いずれにしても、もともとプロセスを開始する.exeは32ビットである必要があります。 WinForms-exeとIIS Webアプリケーションの両方でJet OLEDBドライバを使用してMsAccessのmdbファイルを読み込んでいるため、動作することが分かりました。ホスティングプロセスが32ビットプロセスの場合、64ビットシステムで動作します。 – Zarat

関連する問題