Visual Studioを使用して、C++でクライアントサーバーアプリケーションを作成しました。
ここで、Visual Studioがインストールされていない別のコンピューターでクライアントexeファイルを実行したいのですが、exeファイルを実行しようとすると、次のエラーメッセージが表示されます。
アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。
コンピューターに何もインストールせずにexeファイルを実行するにはどうすればよいですか?
デバッグではなくリリースでプログラムを展開し、exeが他のコンピューターで動作するようになりました
Visual Studioで構築されたアプリケーションは、Visual C++ Redistibutable(VCRedist)に依存しています。プログラムが動的にリンクされている場合、バイナリには_MSVCR**.dll
_(Microsoft C Runtime Library)が必要です。
MSDNには、 Visual C++ファイルの再配布(Visual Studio 2008) という素敵な記事があり、潜在的なランタイムエラー必須のVisual C++ライブラリがインストールされていないこと:
アプリケーションを実行しようとするWindowsのバージョンに応じて、次のいずれかのエラーメッセージが表示される場合があります。
- アプリケーションは適切に初期化できませんでした(0xc0000135)。
- アプリケーション構成が正しくないため、このアプリケーションは起動に失敗しました。アプリケーションを再インストールすると、この問題が修正される場合があります。
- システムは指定されたプログラムを実行できません。
Multi-threaded DLL (/MD)
からMulti-threaded (/MT)
に変更する必要があります。ただし、アプリケーションは他のDLLにも依存する場合があります。プログラムの依存関係を知りたい場合、 Dependency Walker という素晴らしいユーティリティがあります。これや他の多くの状況であなたを助けます:)
背景:
Soloution:最後に、とにかくターゲットコンピューターには正確なランタイムアセンブリが必要です。これを行う方法はいくつかあります(詳細については、それぞれGoogleで検索してください)。
条件:
その特定のエラーを見たことはありませんが、通常はDLL(windows redistributable)の欠落に関するエラーです。実際に構成に問題がないと仮定すると、2つの選択肢があります。
1)コンパイルモードをマルチスレッドDLLからマルチスレッドに変更します。これは、コード生成のプロジェクトプロパティのC++セクションから実行できます。マルチスレッドモードでは、バイナリは再配布可能なウィンドウに対して静的にリンクされます。これはおそらくあなたが望むものです。
2)ターゲットマシンに再配布可能なウィンドウをインストールします。これはおそらく、ターゲットマシンに何もインストールしたくないと述べているので大丈夫ではありません。
オプション1に関する警告には、Windowsのバージョンごとに再配布可能ファイルのバージョンが異なります。静的にリンクされたプログラムが期待どおりに動作しない、非常に特殊な環境に遭遇する可能性があります。
いくつかのDLLファイルがありません。適切なdllをexeと一緒にコピーしてください。