PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompilieren



Tridestaros
22.02.2007, 14:19
Hi,
ich habe seit kurze, nach einer längeren Pause wieder angefangen C++ zu lernen, allerdings habe ich mir einen neuen Compiler geholt( eine Version von Dev-Cpp), welcher mir jedoch Probleme beim kompilieren macht.
Wenn ich nun ein Projekt aus dem Tutorial kompiliere, so kann ich es noch nicht ausführen, jedoc hwenn ich bloß die Quell datei anwähle, geht es und es wird ausgeführt, kann mir jemand das erklären?
Danke im Voraus

Crash-Override
22.02.2007, 14:22
kann mir jemand das erklären?

Bitte poste den Quellcode oder evt. zippe das Projekt. Wahrscheinlich irgendwas an den Projekteinstellungen falsch. Erstelle mal ein neues Projekt und kopiere den alten Code. Evt. geht das.

raian
22.02.2007, 14:48
Hast du daran gedacht die Bibliotheken zu linken usw?

Wäre ungut wenn du das vergessen hättest.. :P

Tridestaros
22.02.2007, 15:00
#include <iostream>

using namespace std;

int main(void)
{
cout << "Hello, World!! Mein Name ist Hase";

return 0;
}
ist zwar von mir gemacht, jedoch ist folgendes das problem:
ich habe dieses programm mit dem kompiler gemacht und zwar:
1. neues PROJEKT machen (mache ich nur eine Quellcodedatei, gehts)
2.kompilieren
3.sich darüber ärgern, das man das Programm schließen muss und die Quellcode datei öffnen muss. ;)

So könnte ich zwar Programme im Quellcode ausführen, aber das Tutorial hat seine Beispiele auch als Projekte angegeben, was mache ich falsch?(Gebt vielleicht mal beispiele, wie ihr ein simples Hallo Welt Programm kompiliert)

EDIT: Was ist das mit die Biliothek linken? Wurde mir nicht erklärt!

DFYX
22.02.2007, 15:57
Sicher, dass du beim Projekt erstellen C++ als Sprache ausgewählt hast und nicht C?

Ansonsten wäre eine konkrete Fehlerbeschreibung schon ganz nett. Mit "Geht nicht" können wir nicht viel anfangen.

Crash-Override
22.02.2007, 15:57
Nichts worum *du* dich kümmern musst wenn du Dev-Cpp nutzt, das sollte es automatisch machen. Du kannst ja auch ein Beispiel-Projekt in Dev-Cpp erstellen, evt. geht es damit. Wenn nicht schau mal ob es evt. eine neuere (evt. andere?) Version von Dev-Cpp gibt. Evt. geht es deswegen nicht, weil der Quellcode sieht in Ordnung aus.
Übrigens: Nutzemal die [*Code][/Code] Tags (ohne *)

z.B.

#include <iostream>

using namespace std;

int main(void)
{
cout << "Hello, World!! Mein Name ist Hase";
return 0;
}

Tridestaros
22.02.2007, 16:09
@DFYX:
Das ist ja das tolle, mache ich kompilieren und ausführen eines PROJEKTES macht er das kompilieren, führt die datei jedoch nicht aus. Dann mus ich die Quell datei NEU öffnen und compilieren, dann läuft die Datei, aber nicht das Projekt.

@Crasg-Override:
Ok, nächstes mal nutze ich den code, aber eigentlich geht es jetzt ja das Programm auszuführen, wäre natürlich besser, ich könnte das Projekt kompilieren, aber habe mich halt gewundert. Zum code: das ist denke ich nun wirklich ohne Fehler und ich habs auch schon 1000 mal versucht auf viele Wege,aber das wird so schon gehen
mfg Tridestaros

DFYX
22.02.2007, 17:41
Mysteriös, ich hab ne Mailbenachrichtigung für nen Post bekommen, der vermutlich die Frage beantwortet hätte, aber er is nicht da:


Hallo DFYX,

Manuel hat auf das Thema 'Kompilieren' im Forum 'Programmierung' bei Multimediaxis geantwortet.

Dieses Thema ist hier zu finden:
http://www.multimediaxis.de/showthread.php?t=92573&goto=newpost

Dies ist der Beitrag, der gerade geschrieben wurde:
***************
Hm... Ich hoffe, ich schätze dich jetzt nicht falsch ein: Dev-Cpp macht - anders als etwa Code::Blocks oder Visual Studio - ausgeführte Dateien sofort zu, sofern sie nicht (z. B. durch Benutzereingaben) aufgehalten werden. Probier mal folgendes:
Code:
---------
#include <iostream>
#include <cstdlib>

using namespace std;

int main(void)
{
cout << "Hello, World!! Mein Name ist Hase" << endl;
system("pause");
return 0;
}
---------

***************


Es könnte noch weitere Antworten auf das Thema geben, jedoch erhältst du keine zusätzlichen Benachrichtigungen, bis du das Forum wieder besucht hast.

Mit freundlichen Grüßen


Statt system("pause"); könntest du auch getch() nehmen, das in der conio.h liegen sollte.

Manuel
22.02.2007, 18:28
Die Sache ist die, dass ich zuerst geschrieben und erst dann ausführlich den ersten Post gelesen habe...Habe den Beitrag hinterher aber sofort wieder gelöscht, weil ich das Problem falsch verstanden habe...

DFYX
22.02.2007, 19:24
Is das einzige, was ich aus der recht vagen Problembeschreibung rauslesen kann. Wenn man davon absieht, dass das Fenster sofort wieder geschlossen wird, funktioniert der Code bei mir nämlich wunderbar.

Tridestaros
22.02.2007, 20:33
sehr seltsam:
ES GEHT!!!!!
Nun habe ich jedoch noch zwei Komplexe:
1. Ich weiß nicht was der Code bedeutet ( siehe mit unterer Punkt )
2. Wenn ich das von dir gegebene eingebe erscheint: Drücken sie eine beliebige Tast ...
Also das mit dem Projekt starten und ausführen klappt, aber wieso erscheint nicht der intellektuelle Text: Hallo Welt mein Name ist Hase?

Ynnus
23.02.2007, 00:17
1. Das system("pause") sorgt dafür, dass sich das Konsolenfenster nicht gleich wieder schließt sondern geöffnet bleibt, bis man eine beliebige Taste drückt. Daher auch die Aufforderung, eine solche zu drücken.

2. Der Text erscheint bei mir ebenso wie die Aufforderung, eine beliebige Taste zu drücken. Keine Ahnung was du hast, aber es funktioniert einwandfrei.

Ineluki
23.02.2007, 02:47
Um verwirrung zu vermeiden mal eine ausfuehrliche Erklaehrung.
Aber zuerst ein paar generellgueltige Aussagen.

1. DAS IST KEIN FEHLER
2. IHR SEID ALLE GUI VERWOEHNT

So . und nun zum Problem ...

C(++) hat standardmaessig nur Funktionen um Text auf der Console auszugeben, also dort, wo auch die Eingabeaufforderung ist. In den alten DOS Zeiten oder unter Linux ist das ganze kein Problem, da man ohnehin immer auf der Console gearbeitet hat. Seit aber GUIs wie Windows etc modern wurden, rueckte die Eingabeaufforderung immer mehr in den Hintergrung. Wenn Windows ueber ein Programm stolpert, das die Console braucht, macht es ein Dosfenster auf, fuehrt das Programm aus, und schliesst das Fenster sofort nach Ende des Programms. Da dein Programm nichts tut, ausser einem Text auszugeben, siehst du nichts, da Windows das Fenster gleich danach schliesst. Wenn du allerdings von der Eingabeaufforderung (Start->Ausfuehren->CMD) dein Programm startest, kommst du nach dem Programmende erneut zur Eingabeaufforderung zurueck, das Fenster bleibt offen (da ja noch der befehlsinterpreter laeuft) und du siehst den Text. Die einfachste, aber auch nervige Loesung ist, dass du einfach einen Befehl einbaust, der den Benutzer zu einer Eingabe auffordert, eben system("pause"), der den DOS-befehl pause aufruft, der den Text "bitte druecken sie eine Taste" ausgibt, oder getch() welches darauf wartet, dass du eine Taste drueckst. Alternativ kannst du auch ein einfaches char c; cin>>c; verwenden. Alle drei Faelle haben gemein, dass dein Programm nicht beendet ist, bevor du nicht die Eingabe gemacht hast, und dadurch das DOS-Fenster so lange offen bleibt und du den Text lesen kannst. Das hat allerdings den Nachteil, dass wenn du das programm von der Eingabeaufforderung aus startest (wie unter linux ueblich), du ebenfalls jedesmal ne taste druecken musst, und das Programm damit fuer den Batchbetrieb praktisch unbrauchbar wird. Eine elegantere Loesung faellt mir allerdings auch nicht ein.

Aber mach dir nichts draus ... Mehr als 90% aller C(++) Anfaenger unter Windows haben das selbe Problem, weshalb es afaik im "Lies mich zuerst" (oder wars im FAQ ?) Thread detailiert erklaehrt wird.

Edit: Ok, es steht in den Threads nicht drin. Ich habe das wohl schon so oft erklaehrt, dass ich dachte, das das da drin steht ^^

Tridestaros
23.02.2007, 12:25
Stimmt nicht Ineluki!!!!!!!!!!
Ich habe schon Programme über den Quelltext ausgeführt und kenne mich damit also aus:


#include <iostream>

using namespace std;

int main(void)
{
int r=0;
cin>>r; //würde auch mit cin.get(); gehen
return 0;
}

wenn ich das hier in einem Projekt eingebe, passiert nichts und auch bei einem Hello World Programm WÜRDE der Text kurz erscheinen, im Projekt passiert jedoch nichts!!!!
Bloß bei dem Code mit
#include <cstdlib>, welchen ich jedoch nicht verändern kann

raian
23.02.2007, 13:29
Bei dem, was du da angeben hast wird keine einzige Textausgabe gemacht. o.ô

Du definierst ein integer "r" mit dem wer 0 und wartest auf eine eingabe, die du in r speicherst.(Unklug. gibst du einen buchstaben auf, haste einen netten Bufferoverflow)

Dannach gibt es den return 0;

Das ist...unsinnig. o.ô

Tridestaros
23.02.2007, 13:56
es geht legedlich darum das DOS fenster offen zu halten, ich weiß dass das Programm nichts bringt, aber ich hätte auch noch vor cin cout<<"Pokemon"; eingeben können, aber es ging bloß darum zu zeigen ob das Programm läuft.

Ynnus
23.02.2007, 20:16
2. IHR SEID ALLE GUI VERWOEHNT

Falsch, das ist lediglich Fortschritt.
Ich bin zwar mit DOS aufgewachsen aber heilfroh, dass ich Verzeichnisse nun schneller löschen kann als jedes einzelne per Commandline aufzurufen, den Inhalt und dann den Ordner zu löschen. Und das bei -zig Unterordnern und vielen Dateien. Nein Danke, dafür liebe ich mein OS mit GUI. Und das ist Fortschritt, keine Verwöhnung.
Oder willst du behaupten, du schreibst lieber auf Papyrus oder meißelst in Stein, weil Papier und Tinte zu sehr verwöhnen? :D

Lukas
23.02.2007, 20:40
dass ich Verzeichnisse nun schneller löschen kann als jedes einzelne per Commandline aufzurufen, den Inhalt und dann den Ordner zu löschen. Und das bei -zig Unterordnern und vielen Dateien. Nein Danke, dafür liebe ich mein OS mit GUI. Und das ist Fortschritt, keine Verwöhnung.

rm -rf ?

DFYX
23.02.2007, 21:53
Oder unter DOS auch deltree

Ynnus
24.02.2007, 12:06
Oder unter DOS auch deltree

Rechtsklick -> Löschen geht immernoch schneller. ;)

Man muss sich ja nicht krampfhaft an uralt-Relikten festhalten. Ich glaube auch nicht, dass Ineluki seine Programme in Dos schreibt und kompiliert. ;)

Geht doch nichts über eine schön gestaltete und leicht zu bedienene GUI. Wieso sollte ich Tippen, wenn ich klicken kann? Dazu hab ich doch ne Maus. Ansonsten sollten Tastenkürzel reichen.
Es gibt zahlreiche Anwendungen, die man nicht ohne GUI anständig bedienen kann.

Lukas
24.02.2007, 12:12
Rechtsklick -> Löschen geht immernoch schneller. ;)

Man muss sich ja nicht krampfhaft an uralt-Relikten festhalten. Ich glaube auch nicht, dass Ineluki seine Programme in Dos schreibt und kompiliert. ;)Ich persoenlich benutze die Shell als Filemanager, in 90% der Faelle ist das bei mir schneller (ich mache allerdings auch allgemein sehr viel auf der Shell). Okay, natuerlich auf 'ner vernuenftigen Shell und nicht auf diesem DOS-Zeugs, aber ich arbeite groesstenteils ohne GUI (ja, auch beim Programmieren).

TheBiber
24.02.2007, 17:16
Rechtsklick -> Löschen geht immernoch schneller. ;)

Kaum. In der Zeit, wo du deine Maus bewegt hast und zwei Klicke ausgeführt hast, hat ein guter Typer schon 5 mal rm -rf eingegeben.

Zwar benutze ich aus Bequemlichkeit eigentlich auch nur die GUI, doch für einen professionellen Programmierer oder Hacker ist die Shell deutlich schneller.

Ausserdem hinkt dein Vergleich mit Papier und Tinte mit dem Papyrus. Viel besser lässt sich die Shell/GUI mit einem manuellen Getriebe bzw. Automatikgetriebe beim Auto vergleichen. Das eine erlaubt volle Kontrolle, das andere ist bequemer. ;)

Ynnus
24.02.2007, 22:35
Kaum. In der Zeit, wo du deine Maus bewegt hast und zwei Klicke ausgeführt hast, hat ein guter Typer schon 5 mal rm -rf eingegeben.

Erst muss er mal das richtige Verzeichnis anwählen und bei langen Dateinamen darf er schön tippen. Da geht ein klick deutlich schneller. Und wenn er mal eine bestimmte Datei löschen will, die "safhewiofgeoig.htn" heißt, dann hat er gut abzuschreiben, bis er den Namen korrekt getippt hat. ;)

DFYX
24.02.2007, 22:40
Was soll ich sagen? rm saf [Tab][Enter]

Ynnus
25.02.2007, 01:52
Was soll ich sagen? rm saf [Tab][Enter]

Und das geht schneller als ein Mausklick? Ich denke die Commandline hat sicher für allerlei Sachen eine Lösung aber mit der Maus geht es nunmal leichter von der Hand. Sonst hätte man sie nicht erfunden und sie hätte sich sonst nicht durchgesetzt. Klar, die absoluten Cracks machen's immer noch mit der Tastatur und viel nur in der Console, aber ich halte das für veraltet und umständlich und weniger komfortabler und unübersichtlicher. Dinge lassen sich in einer sauberen GUI besser anordnen als in einer Console. Und für manche Dinge braucht man einfach die Präzision einer Maus, die eine Tastatur nicht bietet.

TheBiber
25.02.2007, 12:46
Und das geht schneller als ein Mausklick?

Was heisst da einer: Ein Mausklick, danach im Pulldown-Menü löschen anwählen und nochmals klicken.


Ich denke die Commandline hat sicher für allerlei Sachen eine Lösung aber mit der Maus geht es nunmal leichter von der Hand. Sonst hätte man sie nicht erfunden und sie hätte sich sonst nicht durchgesetzt. Klar, die absoluten Cracks machen's immer noch mit der Tastatur und viel nur in der Console, aber ich halte das für veraltet und umständlich und weniger komfortabler und unübersichtlicher. Dinge lassen sich in einer sauberen GUI besser anordnen als in einer Console. Und für manche Dinge braucht man einfach die Präzision einer Maus, die eine Tastatur nicht bietet.

Das ändert ja nichts daran, dass Cracks mit einer Shell um längen schneller sind als mit einer GUI. Spätestens beim Hacken von anderen Systemen kann sowas von entscheidender Bedeutung sein. :D

Ineluki
26.02.2007, 01:23
Also ich arbeite sicherlich 70% meiner zeit am Computer auf der Shell Oo
Unter Linux benutze ich die GUI-Dateimannager gar nicht. Textdateien erstelle/bearbeite ich mit nano auf der Cosole oder mit > und >>


Ausserdem hinkt dein Vergleich mit Papier und Tinte mit dem Papyrus. Viel besser lässt sich die Shell/GUI mit einem manuellen Getriebe bzw. Automatikgetriebe beim Auto vergleichen. Das eine erlaubt volle Kontrolle, das andere ist bequemer. .. Ich benutze uebrigends ein manuelles Getriebe im Auto ^^

Aber das ist hier ja nicht das thema des Threads ...

Ich weiss immer noch nicht genau, was das Problem unseres Threaderstellers ist, bzw wie es sich aeussert. Bei mir tut der Code einwandfrei. Also entweder du klickst immer nur auf "compilieren" anstatt auf den "compilieren & ausfuehren" Button, oder du hast bei der Installation von Dev-C++/MingW irgend nen fehler gemacht, oder nicht alles installiert, oder in deinem System ist irgendwo richtig der Wurm drin. Ich hab auch noch nirgends von einem aehnlichen Bug gehoehrt. Also ... vielleicht solltest du uns mal die ganz genaue Version deines Dev-C++ sagen, sowie eventuelle Compilelogs etc ansehen bzw make per Hand ausfuehren ... oder dich an das Dev-C++ Entwicklungs-Forum bei www.bloodshed.net wenden .. auch wenn da afaik bei der Entwicklung mehr oder weniger tote Hose ist. Mit einem lapidarem "Mein Dev-C++ macht komische Sachen" ist hier keinem gedient.

FF
26.02.2007, 15:07
Geht doch nichts über eine schön gestaltete und leicht zu bedienene GUI. Wieso sollte ich Tippen, wenn ich klicken kann? Dazu hab ich doch ne Maus. Ansonsten sollten Tastenkürzel reichen.
Es gibt zahlreiche Anwendungen, die man nicht ohne GUI anständig bedienen kann.
was sagt man da?
!dito
?^^

imo ist textbasiert > gui, wenns nicht grade um grafikprogramme geht.
dateioperationen wie verschieben oder löschen geht imo mit ner linux bash erheblich viel schneller und bequemer als das rechtsklick-> löschen unter win o.O
da muss man erstmal hinnavigieren, was auf meinem rechner schon mal ne zeit dauern kann, und auch das rechtsklick menü braucht bei mir schon mal ne sec. je nach ornder^^

tippen geht nunmal sehr viel schneller, als die maus bewegen und da was anklicken, außerdem liegen bei mir im normalfall beide hände auf der tastatur, und ich finds extram mühsam, die rechte hand zu erheben, sie auf die maus zu bewegen, und dann mit dieser was zu machen, da ists doch viel bequemer, das alles direkt mit den tasten zu tun.

dinge, die man also nicht gut ohne gui bedienen kann: grafikprogramme, 3d modelationen, und... das wars o.o
mehr fällt mir nicht ein.
ok, videoschnitt vllt.

aber alle anderen sachen, für die man nicht zwangsläufig grafische ausgaben braucht, kann man textprogramme machen, die deutlich bequemer sind als gui sachen.



Und das geht schneller als ein Mausklick? Ich denke die Commandline hat sicher für allerlei Sachen eine Lösung aber mit der Maus geht es nunmal leichter von der Hand. Sonst hätte man sie nicht erfunden und sie hätte sich sonst nicht durchgesetzt. Klar, die absoluten Cracks machen's immer noch mit der Tastatur und viel nur in der Console, aber ich halte das für veraltet und umständlich und weniger komfortabler und unübersichtlicher. Dinge lassen sich in einer sauberen GUI besser anordnen als in einer Console. Und für manche Dinge braucht man einfach die Präzision einer Maus, die eine Tastatur nicht bietet.

ja, das ist wirklich schneller.
du hast einen ordner, mit vielen unterordnern, wobei der ordner den du willst, nicht direkt oben ist, heißt, du musst erstmal scrollen, anklicken, suchen, wieder scrollen, anklicken usw.
da geht das mit der shell und tab vervollständigung erheblich viel schneller.



Unter Linux benutze ich die GUI-Dateimannager gar nicht. Textdateien erstelle/bearbeite ich mit nano auf der Cosole oder mit > und >>

Dito. blos das ich da vim nehm^^

@topic:
wie wärs denn, wenn du einfach mal, bis du irgendwelche GUIs brauchst (die sind mit ner IDE oft wirklich schneller und einfacher zu erstellen....) deine programme in nem texteditor schreibst, und dann manuell per commandozeile kompilierst?^^ so gehts garantiert :D

Manuel
26.02.2007, 15:48
Und warum nicht gleich die Kombination, um beide "Welten" zu vereinen? Wenn ich unter Ubuntu was löschen will, öffne ich Nautilus, tippe die ersten drei, vier Buchstaben des Ordners ein (Nautilus springt sofort auf den Ordner) und drücke dann auf meiner Tastatur die "Entf"-Taste. Ein Doppelklick auf Nautilus geht schneller als das Wort in der Shell einzutippen, von daher... Was habt ihr alle mit eurem Rechtsklick? o0 ;D