7

コマンドプロンプトでg ++を使用してコンパイルし、コマンドプロンプトから実行する簡単なC ++プログラムを作成しました。私のプログラムのコードは次のとおりです。

#include<iostream>

int main() 
{
    std::cout<<"Hello world"<<std::endl;
    return 0;
}

このコードを実行すると。オフィス マシンで「hello_world.exe が動作を停止しました」というエラーが表示されます。しかし、コードの同じ部分を自宅で実行すると、問題なく動作します。なぜこれが起こっているのですか?また、 std::endl を削除すると正常に動作します。

コードに Notepad++ を使用しています。

更新: 両方のマシンで同じバイナリを実行していません。両方のマシンで別々にコンパイルします。両方の場所で Windows 7 32 ビットを使用しています。私はmingwを使用しています。コンパイルするには、「g++ hello_world.cpp -o hello_world.exe」と入力します。実行するために、「hello_world.exe」と入力しました。サイトmingw.orgからmingwをダウンロードし、「mingw-get-setup.exe」を使用してインストールしました。そして、コマンド「mingw-get install gcc g++」を使用して、コマンド プロンプトから g++ と gcc をインストールしました。

4

3 に答える 3

1

から戻るとmain()、プログラムは動作を停止します。GUI ベースの環境では、アプリケーションをサポートするために生成された端末が終了する前に、ユーザーが [閉じる] をクリックする必要がある端末ベースのアプリケーションが完了することを警告するポップアップ メッセージが表示されても驚かないでしょう。 . Windows 9x では、MS-DOS プログラムのランチャー設定にそのようなチェックボックスがありました。

問題を特定するために使用する必要がある質問は次のとおりです。 - 自分でシェルを起動した場合に同じエラー メッセージが表示されますか? - 両方のマシンでまったく同じバイナリを使用していますか? もしそうなら、両方のマシンでそれを実行できますか?

于 2013-09-30T13:14:54.303 に答える
1

エラー メッセージの正確なテキストを確認すると役立ちます。

プログラムは、C および C++ ランタイム ライブラリに依存しています。おそらく、コードを記述したマシンにVisual Studioをインストールしたが、実行しようとしているマシンにはインストールしていないため、ライブラリが動作するマシンにインストールされていて、動作しないマシンにはインストールされていないと思われます.

プログラムをコンパイルした Visual Studio のバージョンの vcredist を Microsoft Download で検索することにより、2 台目のコンピューターにランタイム ライブラリをインストールできます。

于 2013-09-30T14:13:10.003 に答える
1

MinGWを使用してWindows 7 32ビットでうまく動作します。プログラムの実行に必要なすべてのコンポーネントがインストールされていないと思われます。MinGW と Msys を再インストールし、必要な C および C++ コンポーネントをすべてインストールしてください。

g++ --version
g++.exe (GCC) 4.6.2

a.exe
Hello World

私は長年 (いくつかの異なるバージョン) Windows で MinGW と Msys を使用してきましたが、標準の C および C++ プログラムのコンパイル、リンク、または実行で問題が発生したことはありません。

于 2013-09-30T18:57:32.243 に答える