Woran erkenne ich Mangaged C++?
-
Man sollte noch zwischen managed C++ und C++/CLI unterscheiden.
In Managed C++ sind managed Zeiger mit * angegeben, nicht mit ^
-
mhh meine Klasse hat "class HelloWorld" (als beispiel) also ist es unmanaged bzw. nicht CLI?
wie kompliert ist es Code umzuschreiben? oder waere es schon fast leichter ihn in C# umzuschreiben?
Hintergrund:
meine DLL braucht einen starken namen und unmanaged C++ scheint das nicht zu unterstuetzen, oder taeusche ich mich?
-
Da findest Du an sich alle Merkmale zum erkennen.
http://msdn.microsoft.com/de-de/library/ms379556(vs.80).aspx
http://de.wikipedia.org/wiki/C%2B%2B/CLI
-
Erstmal danke! der Bericht auf MSDN ist schonmal sehr hilfreich nur hab ich nochmal eine Frage zu meinem Verstaendnis:
es gibt nun 3 Varianten von C++?
Unmanaged
Managed
CLI? oder ist MFC auchnochmal eine extra Variante?
als ich damals C++ programmiert habe, gabs nur eine Variante O.o
-
Es gibt ISO C++ nach dem Standard von 1998/2003.
Dann gibt es die managed extensions von Microsoft, in .NET 1.1. Die Syntax war grausam, wurde IMHO nie standardisiert.
C++/CLI ist eine Verbesserung von den managed extensions, wo u.a. die Syntax für Handles der der Zeiger entspricht, nur mit anderen Symbolen (statt überall ein __gc einzufügen). Ist durch die ECMA standardisiert worden.Die gute, alte MFC ist eine Klassenbibliothek, die auf ISO C++ (z.T. noch früher) aufsetzt, vielleicht unter der Nutzung von ein paar MS-Spracherweiterungen, die man aber als Benutzer der Bibliothek vernachlässigen kann.
-
Mmhh okay ich verstehe nun langsam die Zusammenhänge.
Nur scheint mir native C++ und CLI ähnlich auszusehen.
Ich habe hier eine Klasse:class CMyClass : public CAtlMfcModule { public: DECLARE_LIBID(LIBID_MyClass); DECLARE_REGISTRY_APPID_RESOURCEID(IDR_ANAPTISCORRECTOR, "{XXX-XXX-XXX}"); };
und ich bin mir unsicher ob das nun CLI ist oder ebend nicht und ob native C++ auch strong names bekommen kann.
sorry fuer die dummen Fragen
-
Bei der Klassendefinition ist es sehr einfach zu erkennen:
- enthält ein "__gc" => Managed C++
- enthält ein "ref" oder "value" => C++/CLI
- enthält keines von beiden => native (bzw. besser gesagt "unmanaged")
-
Danke!! das war die Info die ich brauchte!
nun recherchier ich noch ob native C++ auch starke namen (strong named) haben können.
-
Wie erkennt man mixed-mode?
-
#ifdef _MANAGED // mixed-mode #endif
-
nochmal hi und nochmal eine dumme Frage:
Strong Named gibt es nur mir .NET richtig? was bedeutet das native bzw. Unmanaged keinen starken namen haben kann oder?
-
Das siehst du richtig. Strong Names gehören zum Sicherheitskonzept von .Net.