web-dev-qa-db-ja.com

MinGWを使用するEclipse CDTがコンソールに出力されない

Windows 7 64ビットPCを使用していて、無料のC++ IDEをインストールしようとしているため、Eclipse HeliosとCDTをインストールすることにしました。

G ++、makeおよびgdbの場合、このチュートリアルに従ってmsysとmingwをインストールしました。 http://wiki.wxwidgets.org/HowTo:_Install_MSYS_and_MinGW_for_use_with_Eclipse_CDT

バージョンは次のとおりです。

  • make:GNU make 3.81
  • g ++:4.5.0
  • gdb:7.1

したがって、64ビットCPUと互換性があるはずです。

しかし、Eclipseで非常に単純なプログラムを実行しようとすると、コンソールに何も表示されません。ソースコードは次のとおりです。

#include <iostream>

 using namespace std;

 int main()
 {
    int i;

    cout << "Enter an integer: " << endl;
    cin >> i;
    cout << endl << "i is " << i << endl;

    return 0;
 }

ビルドは問題なく、コマンド(Windowsコンソール)を使用して.exeを起動したときの動作は期待どおりです。しかし、Eclipseコンソールでは実行時に何も表示されず、デバッグでは「整数を入力してください」という出力が表示されます。その後、数値を入力してEnterキーを押しても何も実行されません。

誰でもこれを修正する方法を知っていますか?

ありがとう、

ギヨーム

PS:私はツールチェーン「Linux GCC」と「MinGW GCC」を使用していますが、コンソールには何もありません。

37
Guillaume

このコンソールのバグは、Eclipseの64ビットバージョンで確認されています。

http://www.Eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428

回避策は、32ビットEclipseをインストールすることです

5
guest

これは、MinGWを使用したWindows 7でのEclipseの64ビットインストールで機能しました。

プロジェクトを右クリックします。 「プロパティ」を選択します。

新しいウィンドウの左側にある「実行/デバッグ設定」プロパティを選択します。

右側のウィンドウで、実行可能ファイルをクリックして強調表示し(つまり、Test.exe)、[編集]をクリックします。

[環境]タブで、[新規]を押します

名前: 
値: MinGW binディレクトリへのパス。 (私にとってこれは:C:\devcore\MinGW\bin

すべてのウィンドウで「OK」をクリックして閉じます。

もう一度実行してみてください。出力が画面に出力されるはずです。

139
ossys

MinGWを使用しているリンカーを設定する必要があります。

以下の手順に従ってください。

Goto Project > Properties > C/C++ Build > Settings > Tool Settings (Tab) > MinGW C++ Linker (Option) > Add Command (g++ -static-libgcc -static-libstdc++)   (default command is only g++)
8
Dhiral Pandya

purlogicのソリューションは機能します。すべてのプロジェクトに設定する代わりに、グローバルに設定できることがわかりました。

[ウィンドウ]-> [設定]-> [C/C++]-> [ビルド]-> [環境]コンパイラの変数を追加します。たとえば、「C:\ MinGW\bin」という値のMINGWを追加しました

7
Yifu

1台のPCに複数のgccがインストールされているため、同じ問題に遭遇しました。しかし、 Gregのソリューション は私にとって部分的にしか機能しませんでした。

私の場合、フラッシュはアプリケーションで明示的に行われませんでした。 C++プログラムではstd::cout << ... << std::endlendlがフラッシュする場合、私のプログラムは通常のprintfなどの実際のC出力を使用しました。 printfは、cmd-windowでプログラムを起動するときに直接見ることができます。しかし、Eclipseコンソールではそれらが欠落していました。したがって、

fflush(stdout);

printfが私のためにした後。これは、Eclipseコンソール実装内の問題になる可能性があります。だからこそ、ここで一部の人々にとってパスの修正が機能しなかったのだと思います。

「実行」設定内でPATHを設定する代わりの代替ソリューションは、基本的に次のようなバッチファイルを使用してEclipse全体を起動することです。

set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\Eclipse.exe

次に、実行構成はデフォルトで正しいMingWロケーションを使用します。また、間違ったgccを使用することで発生する可能性のある他の問題も修正される可能性があります。

2
michael_s

管理者権限でEclipse.exeを実行しようとしましたか?それは私のために働いた!

1
Roberto

64/32ビットEclipse Kepler CDTでこの問題が発生し、MinGWを使用してopenCV/wxWidgetsツールWin7で動作するようになりました。

この問題を抱えている間に誰かがこれに出くわし、openCVで作業している場合、インターネット上には多くの古いopenCVのビルド/インストール手順があることを既に知っているでしょう。

私が持っていたのは、[ビルド設定]-> [リンカ]-> [その他]に移動し、[リンカフラグ]テキスト入力ボックス内に-Wl,--subsystem,windows -mwindowsただし、これによりcoutはWindowsのコマンドライン端末に出力できなくなります。

これをさらに掘り下げると、意図的に見えます。明らかに、-mwindowsには、STDOUTをコマンドラインからGUIに似たアプリケーションに向ける必要があります。

また、-mwindowsそしてそのまま-Wl,--subsystem,windowsは、とにかくコマンドラインからSTDOUTをリダイレクトするというタスクをすべて完了します。

さて、wxWidgetsとopenCVを含むハローワールドプログラム以外にはまだ何も作成していないので、GUIの一部に対処する時点ではないので、その機能がどうなるかわかりません現在は壊れているか、GUIオブジェクトとコマンドライン端末に出力される場合。

1
JoeManiaci

実行->実行構成->環境タブでC++プロジェクトにPATH変数(PATH = "your MinGW/binディレクトリパス")を追加します。

enter image description here

0
zaursh

または、リンカオプション-static。少なくとも私のために動作します。

0
rmk