2016-07-09 4 views
0

Windows XPのクリーンインストールでVC10/MTを使用してコンパイルしたプログラムをテストすると、「このアプリケーションはMSVCRXXX.dllが見つからないため、起動できませんでした。問題を解決するかもしれない」どうすれば私のプログラムは明らかに私のプログラム(これは本当にやりたくない)でdllを出荷する以外にも、このバージョンのウィンドウと互換性を持たせることができます。私は、この特定のOSバージョンがMSVCR100.dllに同梱されていないのですが、/ MTでコンパイルしていないことが問題であることを認識しています。 Windows 7でも動作しません。コンパイラが/ MTフラグを無視するのはなぜですか?/NODEFAULTLIBでコンパイル

+2

このオプションは、ソリューション内のすべての***プロジェクト、リンク先の他のサードパーティライブラリの*および*に設定されていますか?そして、 "Release"ビルドの*/MTスイッチを設定していて、XPマシンで同じビルドを実行しようとしていますか? –

+1

各バイナリで 'dumpbin/DEPENDENTS foo.exe'を使用できますか?これは、どのバイナリが.dllランタイムに依存しているかを示します。 –

+0

はい、正しい構成プロファイルを設定していることを確認しました。それが私が最初にしたことです。問題は私が/ NODEFAULTLIBを使用していることがわかりましたが、msvcrt.libを静的にリンクしています。他のコンピュータで/ NODEFAULTLIBを使用してプログラムを動作させるにはどうすればよいですか? – user1304765

答えて

2

コメントではなく、投稿に関連する情報を編集する必要があります。

Why is the compiler ignoring my /MT flag?!

あなたはCRTのDLLバージョンのインポートライブラリである、代わりにデフォルトのライブラリ(/NODEFAULTLIB)とリンクmsvcrt.libを無視するようにリンカに指示していますので。

  • どちらかmsvcrt.libを削除し、コンパイラ/リンカが仕事をやらせる、/NODEFAULTLIBをドロップします。

  • またはmsvcrt[d].libからlibcmt[d].libに変更してください。

関連する問題