Namespace einbinden für Anfänger
-
Hallo!
ich möchte mich in .NET unter C++ einarbeiten.
Leider scheine ich auch der Leitung zu stehen.
möchte mir die .NET Funktionen zu nutze machen um einfach textausgaben in der Console zu machen.
Dazu habe ich ein neues Win32 Projekt erstellt und Konsolenanwendung ausgewählt.nun will ich ein einfaches Hello ausgeben. Code dazu:
// test1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { cout << "Hello!" << endl; return 0; }
Meldung: 1>d:\projects\test1\test1.cpp(6) : error C2871: 'std' : a namespace with this name does not exist
ich denke mal, dass ich irgendwelche header einbinden muss, damit er den namespace kennt. aber weder die Hilfe von VS noch google sagt mir welche header da jetzt benötigt werden.
Wo kann ich denn sowas nachschauen.
oder sit es doch ein ganz anderes problem?Danke schonmal für die Hilfe
-
Der Namespace std ist auf viele Header verteilt. Du musst vorzugsweise diejenigen einbinden, die Du brauchst. Für cout brauchst Du z.B. <iostream>.
Aber Dir ist klar, dass das C++ ist und nicht C++/CLI mit .NET, gell? Wenn Du .NET machen möchtest, musst Du ganz anders anfangen (aber dafür empfehle ich auch die Sprache C# statt C++/CLI).
-
Warum ist das denn kein C++ mit .NET
dachte sobald man namespaces verwendet, ist es .NET
Wie müsste ich denn dann anfangen?^^eigentlich wollte ich erstmal .NET durch c++ näher kennenlernen weil ich c# noch nie verwendet habe und somit nicht gleich 2 "unbekannte" habe...
-
Warum ist das denn kein C++ mit .NET
dachte sobald man namespaces verwendet, ist es .NET
Wie müsste ich denn dann anfangen?^^eigentlich wollte ich erstmal .NET durch c++ näher kennenlernen weil ich c# noch nie verwendet habe und somit nicht gleich 2 "unbekannte" habe...
hängt die include von den genutzten funktionen ab oder wie bekomme ich raus welche ich benötige?
-
Namespaces gibts auch in C++.
Ich würde Dir C# empfehlen, um bei .NET einsteigen möchtest und C++ (nativ) noch nicht so gut kennst.Für Anfänger ist es oft schwierig zu erkennen, was genau zu welcher Sprache / Framework / Runtime gehört (verwirrung von C, C++, C++/CLI). Die Gefahr ist gross, dass sehr unsaubere Code entsteht, und der Betreffende nicht versteht, was warum läuft oder eben nicht.
Simon
-
ok danke.
nur könntet ihr mir sagen, wie ich die benötigten headers bzw includes finde, welche ich für die namespaces benötige?
z.B. kann ich System namespace wieder aus gleichem grund nicht benutzen.
in der MSDN hab ich auch nix gefunden was mir hilft...
Bin ich einfach zu blöd?
-
Du musst erst die assemblies referenzieren.
Dann using namespace xyz;Lies das mal durch...
http://www.functionx.com/vccli/general/introvccli.htm
-
Danke für den Link!
Werde ich mal durcharbeiten, auf den ersten blick sieht es sehr gut aus!aber was meinst du mit "assemblies referenzieren"?
-
Und hier noch ein kleines Beispiel...
// Console.cpp: Hauptprojektdatei. #include "stdafx.h" //für C++/CLI (WritLine, ReadLine usw.) #include "iostream" //für ISO C++ (cin, cout usw.) using namespace System; //C++/CLI using namespace std; //ISO C++ int main(array<System::String ^> ^args) { String^ nameUser = nullptr; //C++/CLI int alter = 0; //C++/CLI und ISO C++ Console::Write("Bitte geben Sie Ihren Namen ein: "); //C++/CLI nameUser = Console::ReadLine(); //C++/CLI und ISO C++ cout << "Wie alt sind Sie? ";//ISO C++ cin >> alter; //ISO C++ Console::WriteLine("Sie heißen \"{0}\" und sind {1} Jahre alt",nameUser,alter); //C++/CLI und ISO C++ return 0; }
-
Hmm wenn ich das kompiliere bekomm ich wieder System namespace with this name does not exist
in der stdafx.h hab ich:
#ifndef _WIN32_WINNT // Lassen Sie die Verwendung spezifischer Features von Windows XP oder später zu.
#define _WIN32_WINNT 0x0501 // Ändern Sie dies in den geeigneten Wert für andere Versionen von Windows.
#endif#include <stdio.h>
#include <tchar.h>Vllt hab ich eine Falsche projektart beim start ausgewählt.
Danke aufjedenfall ich probiere einfach mal ne runde
-
Doug_HH schrieb:
#include "stdafx.h" //für C++/CLI (WritLine, ReadLine usw.)
Hängt davon ab was in der stdafx includiert / referenziert ist.
Bei VS2005 / VS2008 können die Referenzen auf die Assemblies AFAIK auch bei den Projekt Einstellungen angegeben werden.
Kann sehr gut sein, dass Du den falschen Projekt Typ genommen hast.
Simon