2013-05-14 26 views
9

32ビットWindows 7デスクトップから64ビットWindows 7 Laptopに移行しました。ソリューション内に約60のプロジェクトを含むC#プログラムを開発しています。64ビットマシンで32ビットモードでOracleクライアントを実行

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 

明らかに誤りがかなり自明であり、私は32ビットモードでロードするために私の全体のソリューションを取得しようとしています:私は、構築しようとしながら、次のエラーを得続けます。私はすべての単一のプロジェクトを通過し、ターゲットプラットフォームをx86に設定しましたが、まだこのエラーが発生しています。私はGoogleを検索し、無数の異なるアプローチを見てきましたが、私はこの問題を解決することはできません。私のプロジェクトが64ビットマシン上で32ビットモードで実行されていることを確認する最良の方法は何ですか?

私はVisual Studio 2008を使用しています。現在、32ビットにダウングレードすることを検討していますが、実際にこれを行う必要はありません。

+0

これは明らかではありません - このエラーは、ビルドプロセス中に、またはアプリケーションを実行する際に発生しますか? –

+0

ビルドは成功しますが、最初のページ(Webベースのアプリケーション)をロードすると、Oracle DBに接続しようとするとこのエラーがスローされます。 – Joseph

+0

どのようなOracleクライアント(32ビットまたは64ビット)を使用していますか? – Belogix

答えて

9

64ビットマシンで実行している場合でも、32ビットのOracleクライアント(Webサイトからはdownload the installer)をインストールする必要があることが判明しました。

また、ディスカッションでは、人々は32ビットモードなどについて話していました。これは、IIS 7でホストされているアプリケーションのチェック/設定方法です。これを変更する必要はありませんが、ここでは完全/将来の参照のために追加しました。

  • IIS 7を起動し、サーバー名ノードを展開します。
  • アプリケーションプールノードをクリックし、使用している アプリケーションプールを探します。右側のパネルをクリックし詳細設定で
  • ... 有効32ビット・アプリケーションに、上から第三の選択肢である設定を確認して表示されるポップアップボックスで
5

メインの.exeファイルを32ビットのみで実行するように変更する必要があります。 Visual Studioでこれを行うことができます。プラットフォームターゲットを「任意のCPU」から「x86」に変更するだけです。

これが不可能な場合は、corflags.exeを使用して既存のexeを32ビットアプリケーションにする必要があります。

+0

私はツールバーのドロップダウンでx86を持っていないので、私はcorflags.exeを使わなければならないと思います。あなたが親切に私をリンクしているページから、私は "CorFlags.exe assembly/32BIT +"を実行する必要があると仮定します。ありがとう。 – Joseph

+0

アセンブリ - あなたのexeファイル。 Visual Studioでプロジェクトを右クリックし、プロパティを選択します。 「ビルド」タブを選択し、プラットフォームターゲットを選択します。このコンボでは、任意のCPU、x86、x64を持っています –

+0

Webアプリケーションを使用しているコメントを読みました。これをIISで設定することができます:https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx –

2

私は数ヶ月間この問題に苦労しており、ついにそれを解決しました。私はすべての投稿が役に立つと思うが、欠けている部分が1つあった。ユーザーDSNまたはシステムDSNのOracleインスタンスセットアップ用のMicrosoft ODBCがありませんでした。私はWindows 8マシンで作業しています。だから私のためには、一般的なウィンドウの検索に行きODBCを入力し、ODBCデータソース管理者(32ビット)を開く必要がありました。 [ユーザーDSN]タブまたは[システムDSN]タブにOracle用Microsoft ODBCセットアップがあるかどうかを確認します。 [追加]をクリックせずに、[Microsoft ODBC for Oracle]を選択します。ヒットしようとしているデータソースの情報を入力し、[OK]をクリックします。あなたのコンピュータを再起動することを確認してください、それは最終的に私のために働いたものです。これがあなたの一部に役立つことを願っています。

0

私の場合、マシンに64ビットのOracleクライアントがインストールされていても、同じエラーが表示されます。したがって、私のアプリケーションでは、アプリケーションを右クリックし、[プロパティ] - > [Web]タブに進みます。 ローカルIIS Webサーバーを使用している場合は、[Use IIS Express]オプションをオフにします。 問題が解決しました。

0

メインの.exeファイルを32ビットのみで実行するように変更する必要があります。Visual Studioでこれを行うことができます。プラットフォームターゲットを「Any CPU」から「x86」に変更するだけです。 https://msdn.microsoft.com/en-us/library/ms185328.aspx

関連する問題