2009-04-10 8 views
3

その他のコンピュータで実行されないVS2008でコンパイルされた、それはWS2_32.LIBライブラリを使用して、私はリリースモードでコンパイルA C++アプリケーションは、私が<strong>のVisual Studio 2008の</strong>と<strong>のVisual C++</strong>言語でWN32プロジェクトを作成している

それは同じコンピュータで非常にうまく動作しますが、exeファイルを(Visual Studioがインストールされていない)他のコンピュータにコピーすると、実行されません。

私が見たメッセージは次のとおりです。

アプリケーションの構成が正しくないため、このアプリケーションを開始できませんでした。アプリケーションを再インストールすると、この問題が解決される可能性があります。

しかし、私はDEV C++を使用して自分のアプリケーションをコンパイルする場合、それは、Visual Studio 2008の実行可能ファイル(9.5キロバイト)と比較してより大きな実行可能ファイル(738キロバイト)を生成します。ただし、DEV C++実行可能ファイルは、他のコンピュータで実行されます。

追加の依存関係フィールドに、私のプロジェクトのリンカープロパティにライブラリws2_32.libを追加しました。

Visual Studio 2008で動作するように修正するにはどうすればよいですか?

私のコードは次のようである:http://www.stan.com.mx/yupi/udpserver.cpp

+0

貴重な情報をありがとうございました。 – kiewic

+0

私はちょうど同じ質問をするつもりでした。努力してくれてありがとう。 – zeroDivisible

答えて

1

私はJaredParに同意します。 VS2008で構築したアプリケーションは動的リンクを使用していますが、DEV C++は静的にリンクしているため、サイズが大きく、なぜ動作するのでしょうか?

しかし、あなたが持っている普通のWin32アプリケーションプロジェクト(設定でそれを配布したくない/必要としない)なら、は再配布せずに別のマシンで実行することができますVS2008をあなたのために静的にリンクさせることによってCRTを(あなたが欠けている標準的なlibであれば)。私はVS2008のコピーを持っていないので、VS2005でそれを行う方法を説明し、うまくいけば翻訳します。

  1. その後、「コードの生成をクリックし、「C/C++」、「構成プロパティ」を展開してプロジェクトの構成プロパティを起動します(右のメニューから「プロパティ」を選択し、プロジェクト名をクリックしてください)
  2. "
  3. "ランタイムライブラリ "項目の下で、特定の構成の場合、非DLLのライブラリを選択します。つまり、"マルチスレッドデバッグ(/ MTd)と必要なリリースビルド用のデバッグビルド " - スレッド(/ MT) "

それが動作するか試してみてください。あなたは明らかにライブラリが静的にリンクされているよりはるかに大きな最終バイナリを得るでしょう。

11

問題は、他のコンピュータはC++ CRTのバージョン9がインストールされていないことはほぼ確実です。

VS2008のCRTに対してコンパイルする際のデフォルトの設定は、動的リンクと静的リンクです。実際のセットアッププロジェクトでプログラムを展開する場合は、CRT再配布可能ファイルを含める必要があります。

ただし、XCOPYの展開を実行する場合は、次のページの手順に従います。

http://msdn.microsoft.com/en-us/library/ms235291.aspx

1

あなたはあなたのプログラムに必要な外部依存関係が欠落することができます。プロジェクト設定をチェックして、たとえばMFCと動的にリンクしているかどうかを確認します。 Dependsユーティリティを実行して、欠落している依存関係をチェックすることもできます。

関連する問題