Ich habe einen Windows 7-64-Bit-PC und versuche, eine kostenlose C++ - IDE zu installieren. Daher habe ich mich für die Installation von Eclipse Helios mit CDT entschieden.
Für g ++, make und gdb habe ich msys und mingw gemäß diesem Tutorial installiert: http://wiki.wxwidgets.org/HowTo:_Install_MSYS_und_MinGW_for_use_with_Eclipse_CDT
Die Versionen sind:
Es sollte also mit meiner 64-Bit-CPU kompatibel sein.
Wenn ich jedoch versuche, ein sehr einfaches Programm mit Eclipse auszuführen, sehe ich nichts auf der Konsole. Der Quellcode lautet:
#include <iostream>
using namespace std;
int main()
{
int i;
cout << "Enter an integer: " << endl;
cin >> i;
cout << endl << "i is " << i << endl;
return 0;
}
Der Build ist in Ordnung und wenn ich die .exe mit dem Befehl (Windows - Konsole) starte, ist das Verhalten wie erwartet . Aber bei der Eclipse - Konsole sehe ich nichts mit run und mit debug ist die Ausgabe nur: "Geben Sie eine integer: ", wenn ich dann eine Zahl eingebe und die Eingabetaste drücke, tut das nichts.
Weiß jemand, wie man das beheben kann?
Vielen Dank,
Guillaume
PS: Ich benutze die Toolchain "Linux GCC", mit "MinGW GCC" habe ich überhaupt nichts in der Konsole.
Dieser Konsolenfehler wurde in 64-Bit-Versionen von Eclipse festgestellt:
http://www.Eclipse.org/forums/index.php?t=msg&th=197552&start=0&S=2a2b64e1f1404705c0214976bd477428
Eine Problemumgehung besteht darin, den 32-Bit-Eclipse zu installieren
Dies funktionierte für mich bei der 64-Bit-Installation von Eclipse unter Windows 7 mit MinGW:
Klicken Sie mit der rechten Maustaste auf Ihr Projekt. Wählen Sie "Eigenschaften".
Wählen Sie links im neuen Fenster die Eigenschaft "Run/Debug Settings" aus.
Klicken Sie im rechten Fenster auf Ihre ausführbare Datei, um sie hervorzuheben (dh - Test.exe), und klicken Sie auf "Bearbeiten".
Klicken Sie auf der Registerkarte Umgebung auf "Neu".
Name: PFAD
Wert: Pfad zu Ihrem MinGW-Bin-Verzeichnis. (Für mich war das: C:\devcore\MinGW\bin
)
Klicken Sie in allen Fenstern auf "OK", um das Fenster zu schließen.
Versuchen Sie es erneut, es sollte die Ausgabe auf dem Bildschirm erscheinen.
Sie müssen den Linker einrichten Ich verwende MinGW.
Befolgen Sie die folgenden Schritte.
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++)
die Lösung von purlogic funktioniert. Statt das für jedes Projekt festzulegen, habe ich festgestellt, dass es global eingestellt werden kann:
In Fenster -> Einstellungen -> C/C++ -> Erstellen -> Umgebung Fügen Sie eine Variable für Ihren Compiler hinzu. Ich habe beispielsweise hinzugefügt: MINGW mit dem Wert "C:\MinGW\bin"
Ich bin auf das gleiche Problem gestoßen, weil mehrere gcc-Installationen auf einem PC installiert waren. Aber Gregs Lösung funktionierte nur teilweise für mich.
In meinem Fall wurde das Flush in der Anwendung nicht explizit durchgeführt. Während C++ - Programme häufig std::cout << ... << std::endl
verwenden, bei dem die endl
eine Flush-Aktion durchführt, verwendete mein Programm tatsächliche C-Ausgaben wie die übliche printf
. Die printf
konnte direkt beim Start des Programms im cmd-Fenster gesehen werden. In der Eclipse-Konsole fehlten sie jedoch. Daher a
fflush(stdout);
nach der printf
tat das Ding für mich. Dies könnte ein Problem bei der Implementierung der Eclipse-Konsole sein. Ich denke, deshalb hat das Fixing the Path für einige Leute hier nicht funktioniert.
Eine alternative Lösung, anstatt den PATH in den "Run" -Einstellungen festzulegen, besteht darin, den gesamten Eclipse mit einer Batch-Datei zu starten, die im Wesentlichen wie folgt aussieht:
set PATH=<mymingwlocation>\bin;%PATH%
start <myeclipselocation>\Eclipse.exe
Dann würde jede Laufkonfiguration standardmäßig den korrekten MingW-Speicherort verwenden. Dies kann auch andere Probleme beheben, die durch die Verwendung des falschen gcc entstehen könnten.
Haben Sie versucht, die Eclipse.exe mit Administratorrechten auszuführen? es hat für mich funktioniert!
Hatte dieses Problem bei 64-/32-Bit-Eclipse-Kepler-CDT, um an einem openCV/wxWidgets-Tool, Win7, zu arbeiten, das MinGW zum Erstellen verwendet.
Wenn jemand auf dieses Problem stößt und mit openCV zusammenarbeitet, werden Sie bereits wissen, dass es viele veraltete openCV-Installations- und Installationsanweisungen im gesamten Internet gibt.
Ich musste zu Build Settings -> Linker -> Miscellaneous gehen und innerhalb des Texteingabefelds Linker Flags .__ eingeben. -Wl,--subsystem,windows -mwindows
Dies verhindert jedoch die Ausgabe von cout an ein Befehlszeilenterminal in Windows.
Wenn Sie noch ein wenig mehr graben, sieht das absichtlich aus. Offensichtlich besteht bei den -mwindows das Ablenken von STDOUT von einer Befehlszeile speziell zu einer GUI-ähnlichen Anwendung.
Wenn Sie -mwindows
entfernen und nur -Wl,--subsystem,windows
lassen, müssen Sie STDOUT trotzdem von der Befehlszeile ableiten.
Nun, Sie wissen, ich habe noch nichts außerhalb eines Hallo-Welt-Programms mit wxWidgets und openCV aufgebaut. Ich bin also nicht gerade dabei, einen Teil einer grafischen Benutzeroberfläche aufzurufen, also weiß ich nicht, ob diese Funktionalität dies tun würde jetzt defekt sein oder ob es an das GUI-Objekt ausgedruckt werden würde, sowie ein Kommandozeilen-Terminal.
Oder setzen Sie die Linker-Option -static
. Funktioniert mindestens für mich.