2011-09-27 16 views
7

私は、いくつかのvC++コンパイル済みWin32 dllを使用する.netアプリケーションを持っています。これは32ビットのWinでうまくいくが、64ビットには問題がある: "DLL 'xyz'をロードできません:指定されたモジュールが見つかりませんでした(HRESULTの例外:0x8007007E)"64ビットWinでdllが見つからない

依存関係ウォーカーを使用するMSVCP100.DLL、MSVCR100.DLL、GDIPLUS.DLL、GPSVC.DLL、IESHIMS.DLL

これらのDLLを私の64ビットWinにインストールするにはどうすればよいですか?どこに置くべきですか?登録する必要がありますか?または...?

私のプロジェクトはx86プラットフォーム用にコンパイルされており、32ビットアプリケーションとしてProgram Files(x86)フォルダから実行されています。私のdllは、Visual Studio 2010でVisual C++経由でWin32としてコンパイルされています。

他の理由で私のdllの64バージョンを入手することは不可能であることに注意してください。

ありがとうございます!

+0

IESHIMSは私がこれまで編集したすべてのプロジェクトで欠けています。理由は分かりません。 – meawoppl

答えて

10

全体のプロセスは32または64ビットである必要があります。すべての依存関係ライブラリを64ビットでコンパイルできない場合は、.NETプロジェクトを32ビットで実行する必要があります。これを行うには、x86構成(デフォルトは任意のCPU)を作成し、この構成で.NETプロジェクトをビルドします。

あなたのケースでは、適切なビット数で、x86コンピュータに再配布可能なパッケージをインストールする必要があります。このパッケージは、MicrosoftのWEBサイトからダウンロードできます。

プログラムにインストールパッケージがある場合は、VC++再配布可能ファイルを単一ファイルまたはマージモジュールとして追加する必要があります。

+0

すべてがx86として構築されていますが、問題はありません。問題はこれらのdllです – Tom

+0

ありがとう。 VC++ 2010の再配布可能なパッケージが助けになりました。 – Tom

2

アレックス・ファーバーが指摘したように、あなたはターゲットマシン上でいくつかのランタイムDLLをインストールする必要があります。

  • Visual Studio redistributable package
  • は(私はこの1つのわからないんだけど、ここでは右のバージョン、4.0と

    • The .NET runtimeそれはC++アプリケーションのためだけであるが、.NETが十分でない場合は試してみる価値があるかもしれません)。
    関連する問題