2011-08-11 11 views
5

Windows 7の新規インストール時に64ビットマシンでVisual Studio 2010を使用してCで書かれた単純な32ビットのHello Worldアプリケーションをコンパイルしようとしています。また、Visual Studioをインストールした後、「Windows 7および.NET Framework 4用のWindows SDK」もインストールしました。 プラットフォームとして「Win32」を選択してアプリケーションを構築しました。これは、Windows 7上で動作しますが、私は(新鮮なソフトウェアおよびサービスパックなし、また、これをインストール)は、Windows XP Professionalのと私の32ビットマシン上でアプリケーションを実行する場合には、このエラーを取得して動作していないようです:64ビットマシンでVisual Studioを使用して32ビットアプリケーションをコンパイルする

"This application has failed to start because msvcr100.dll was not found" 

それならば

"Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module." 
"Error: Modules with different CPU types were found." 

http://img820.imageshack.us/img820/4725/errordp.png(写真)私はそれを解決するにはどうすればよい

:依存関係ウォーカーは、2つのエラーを(詳細については、リンクされた画像を参照)を検出役立つことができますか?ありがとう!

答えて

2

これにDependency Walkerを信頼しないでください...明らかにあなたのexeは32ビットです。あなたの問題は、CRのdllであるVC再配布可能ファイルにあります。あなたのVSインストールでvcredist_x86.exeを探してください。あなたはあなたのアプリを実行する前にそれを実行する必要があります。

また、CRTを静的にリンクすることもできます。 /MT optionを参照してください。あなたのexeを大きくしますが、vcredistのものを保存します。

+0

私は/ MTオプションを設定しましたが、今回は「プロシージャエントリポイントdecodepointerがダイナミックリンクライブラリkernel32.dllに見つかりませんでした」というメッセージが表示されるのはなぜですか? – mt22

+0

@Lorenzo、DecodePointerはXP SP2以降でサポートされています。/MTを使ってコンパイルすると、これがあなたの問題である段階にまでさらに進化していきます...動的リンクは同じ問題を引き起こします。 [XPの基本バージョンにコンパイル](http://msdn.microsoft.com/en-us/library/aa383745(v = vs.85).aspx#setting_winver_or__win32_winnt)、またはXPを更新します。 – eran

+0

Ok、感謝@eran、別の小さな質問:なぜ私はこのようなケースで依存性ウォーカーを信頼する必要はありませんか?これらのエラーはどういう意味ですか? – mt22

2

ここでの問題は、Windows XPマシンでコンパイルされたプログラムで使用されるCランタイムが見つからないことです。 Visual Studio 2010は、既定でXPでは使用できない10.0(msvcr100.dll)ランタイムをデフォルトで使用します。プログラムを実行するには、マシンにCランタイムを手動でデプロイする必要があります。

あなたは仕事で追加の64分の32の問題があるかもしれないのVisual Studio 2010

で構築されたCアプリケーションを配置する周りの問題について説明し、次のMSDNの記事を読むことをお勧めしますが、これは主要な問題のようです

3

実行されるマシンにはランタイムライブラリが必要です。このMSDN informationを参照してください。

1

ランタイムライブラリに関する回答が正しいです。別の可能な解決策は、DLLバージョンではなく静的ランタイムライブラリにリンクすることです。このようにして、実行可能なビルドを構築できます。この実行可能ファイルは、特別な配備の手間をかけずに任意のマシンにドロップできます。

これはトレードオフですが、あなたの状況についてもっと知らなくても、それは検討する価値があります。

関連する問題