Hey Leute,
ich lerne zurzeit Programmieren mit C++ und was mich jetzt wirklich nervt ist, dass,
wenn ich mir ein kleines Programm mache und dann ein leeres Projekt dafür nehme ohne vorkompilierte Header und allem, dass das Programm dann nicht läuft.
Ich habe hier 2 sehr einfache Programme:
Nummer 1 ohne vorkompilierte Header, alles selber geschrieben:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main ()
{
cout << "Hallo Welt!" << endl;
return 0;
}
und Nummer 2 mit den vorkompilierten Header, wo ich nur noch cout und die include iostream dazugeschrieben habe:
// Hallo.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hallo Programmierer!" << endl;
cout << "Wie geht es dir?" << endl;
return 0;
}
Also, bei dem 2. kommt das Programm genau so wie es sein soll, bei dem 1. aber kommt ein Fehler. Ein Screenshot davon ist im Anhang.
Warum kommt da immer der Fehler?
Und für was genau brauch ich "#include "stdafx.h"?
Und wenn ich den Code von Nummer 2 kopiere und 1:1 in Nummer 1 einfüge, dann kommt die Fehlermeldung trotzdem.
Ich habe die Einstellungen richtig drin: Konsolenanwendung, .c++-Datei.
]
Geändert von MoingMoing (28.12.2011 um 16:55 Uhr).
Kurz gesagt, im Visual Studio gilt: C++ ist nicht gleich C++!
In deinem Fall hast du ein win32-Projekt mit VC++ angelegt, verwendest aber nicht die "Microsoft'sche Version". Wenn du mit VC++ Standard-Code schreiben willst musst du afaik ein leeres Projekt verwenden.
Ich habs ja schon mal geschrieben: Visual Studio ist gerade für Anfänger nicht die beste Wahl... ]
Zu der stdafx.h: ]
28.12.2011, 19:06
Threadersteller
MoingMoing
Ich habe ja ein leeres Projekt angelegt.
Wenn ich aber den 1. Code in einem leeren Projekt benutze, kommt die Fehlermeldung unten.
Aber wenn ich ein Projekt mache mit dem include stdafx.h .... und auch mit der funktion int main dann geht es.
aber warum?
28.12.2011, 19:08
bf3_3amer
würde auch gerne mal C;C++ lernen aber ich weis nicht wo ich anfangen soll!? gibt es irgendeine Seite wo man sich einlesen kann?
29.12.2011, 08:00
Threadersteller
MoingMoing
also, es gibt seiten wo man sich reinlesen kann und auch auf youtube tutorials um es sich mal anzusehen, musst mal schaun.
ich lern C++ mit 2 Büchern wie "From Zero2Hero" und "Einstieg in C++"....
musst mal schauen.
bitte eine Antwort, wieso geht der gleiche Code nicht, wenn ich ein leeres Projekt nehme?
29.12.2011, 13:12
Mr.Silt
Guter Einstieg wie ich finde ist C-Lite: ]
29.12.2011, 17:13
Threadersteller
MoingMoing
Zitat:
Zitat von Mr.Silt
Guter Einstieg wie ich finde ist C-Lite: ]
tut mir leid wenn ich es so schreibe, aber wir kommen hier vom thema ab
bitte eine Antwort auf meine Frage:
wieso geht der genau gleiche Code nicht, wenn ich diesen in ein leeres Projekt kopiere? in einem vorkompiliertem Projekt funktioniert der Code aber....?
29.12.2011, 18:25
BitGNU
Zitat:
Zitat von MoingMoing
wieso geht der genau gleiche Code nicht, wenn ich diesen in ein leeres Projekt kopiere? in einem vorkompiliertem Projekt funktioniert der Code aber....?
Wahrscheinlich weil du die Settings des Compilers in einem leeren Projekt manuell vornehmen musst. Vergleich mal die Compiler Settings deines leeren Projektes mit dem eines vorkonfigurierten Projektes.
Das ist eben auch das Problem was viele mit Visual C++ haben. Es besteht ein Unterschied zwischen reinem C++ und Visual C++ und wenn du mit den falschen Compiler Settings kompilierst kommt es zu Fehlern.
Geändert von BitGNU (29.12.2011 um 18:30 Uhr).
29.12.2011, 19:32
Threadersteller
MoingMoing
okey ich schau gleich mal nach
wo genau sind die compiler settings?
ich hab bei Extras\Optionen überall nachgeschaut und dort waren alle einstellungen gleich....
29.12.2011, 20:52
BitGNU
Zitat:
Zitat von MoingMoing
wo genau sind die compiler settings?
Musste mal googlen. Hab die IDE nicht auf der Platte.
Könnte auch sein das die unter dem Stichwort "Build" zu finden sind.
PS: Warum benutz du eigentlich Visual Express und nicht Code::Blocks oder eine andere IDE?
Ich würde die IDE wechseln und mich aufs lernen konzentrieren...
Geändert von BitGNU (29.12.2011 um 20:57 Uhr).
30.12.2011, 09:31
Threadersteller
MoingMoing
Weil ich visual express einfach besser finde.
Bei Code Blocks Bin ich nicht so zurecht gekommen.
Hab auch noch Notepad++ und von MinGw den Compiler....
hab auch schon gegoogelt, finde aber nichts passendes.
kann mir da jemand helfen?
bei einem vorkompiliertem projekt sind ja auch noch andere dateien in dem Projektordner drin wie in dem Ordner Headerdateien.... dort sind 2 Dateien ...
kann es sein, dass es darum bei einem leeren Projekt nicht geht, weil dort die Headerdateien Fehlen?
Geändert von MoingMoing (30.12.2011 um 15:03 Uhr).
31.12.2011, 03:59
BitGNU
Zitat:
Zitat von MoingMoing
bei einem vorkompiliertem projekt sind ja auch noch andere dateien in dem Projektordner drin wie in dem Ordner Headerdateien.... dort sind 2 Dateien ...
kann es sein, dass es darum bei einem leeren Projekt nicht geht, weil dort die Headerdateien Fehlen?
Ich kann dir jetzt nicht sagen wie die einzelnen Optionen in VC++ heißen, aber probier mal (im übertragenen Sinne) aus, statt "Run Projet" erstmal die Option "Build Project" auszuwählen. Dann werden erstmal alle benötigten Daten für das Projekt erstellt. Bei Eclipse ist das ähnlich das sich ohne nichts kompilieren lässt.
Wenn das nicht hilft, würde ich vor schlagen dich mal in einem C++ Forum zu registrieren ( z. B. ] ) und dort nachzufragen. Wir scheinen ja hier auf keinen grünen Zweig zu kommen weil viele gar nicht programmieren o. die IDE nicht installiert haben. Lg
31.12.2011, 10:56
Threadersteller
MoingMoing
Also bei VC++ gibt es die Möglichkeit, das Projekt neu zu erstellen. Ich hab es mal versucht doch dann kommt wieder eine Fehlermeldung:
Zitat:
1>LINK : error LNK2001: Nicht aufgelöstes externes Symbol "_mainCRTStartup".
1>C:\Beispiele\Ausprobieren\Debug\Ausprobieren.ex e : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Mein gesamter Code ist aber wirklich sehr sehr leicht gehalten: