Unmanaged Class in .NET Umgebung
-
Hi allerseits, nachdem mir dieses Forum schon oft geholfen hat hab ich mich auch mal angemeldet, da ich eine recht spezifische Frage habe und ein wenig ratlos bin.
Ich lerne etwa seit einem Jahr C/C++(Konsolenanwendungen) und nun sollten wir ein Projekt mit GUI (Windows Forms) erstellen.
Benutzt wird Visual Studio 2005.
Ok, ich hab mich jetzt hingesetzt und eine Klasse in C++ geschrieben (war viel Arbeit) und wollte diese jetzt in mein Windows-Forms-Projekt mitbenutzten.
Seit heute weiß ich, dass es unmanaged (meine Klasse) und managed (.NET Windows Forms) Code gibt und man dieses nicht einfach mischen kann.
Da in der Klasse wirklich viel Arbeit steckt such ich nun einen Weg diese in meiner .NET-Umgebung zu verwenden.
Wie geht man da am besten vor? Was habe ich für Möglichkeiten?
Ich bin nicht wirklich warm mit dem Visual Studio, z.B. hab ich etwa 3 Stunden gebraucht um LibCurl mit einzubinden und zum Laufen zu bekommen.... :p
Es wäre super wenn ihr mir weiterhelfen könntet, vielleicht mit nem Wink in die richtige Richtung oder nem kleinen Beispiel.
PS: Meine Klasse verwendet die externe Bibliothek libcurl falls das ausschlaggebend ist.
Viele hoffnungsvolle Grüße
-
Bau eine dll mit C Interface um deine Klasse und verwend diese per P/Invoke aus deinem .NET Code heraus.
Ansonsten kannst du auch mit C++/CLI einen .NET Wrapper bauen, einem Anfänger würd ich davon aber ganz stark abraten.Abgesehen von all dem würd ich allerdings vermuten, dass du diese Klasse in .NET sowieso sehr viel einfacher hättest bauen können als in C++. Ich würd an deiner Stelle ernsthaft in Erwägung ziehen, einfach eine neue entsprechende Klasse in C# zu bauen...
-
Okay, also eine DLL selber erstellt hab ich noch nicht und das mit C Interface und P/Invoke hört sich auch schon kompliziert an, mal abgesehen vom Wrapper.
Ist C# die "Sprache" der .NET-Umgebung?
Sorry für die vllt dumme Frage, aber irgendwie fühl ich mich gerade ein wenig ins kalte Wasser geworfen
Meine Klasse sucht selbstständig nach Filmeinträgen auf einer Moviedatenbank im Internet und extrahiert dann alle Infos.
Dabei hab ich stark die string-Klasse eingesetzt und deren Methoden substr,...
Bei .NET gibts ja kein "string" sondern "String" hab ich mir sagen lassen... vielleicht kann ich ja da viel von meinen jetzigen Methoden wiederverwenden
Falls C# die Sprache der .NET-Umgebung ist, wie sehr unterscheidet die sich von C++?
Bin für jede Hilfe dankbar!
-
Ist C# die "Sprache" der .NET-Umgebung?
ja
Bei .NET gibts ja kein "string" sondern "String" hab ich mir sagen lassen... vielleicht kann ich ja da viel von meinen jetzigen Methoden wiederverwenden
Die Klass String aus dem Namespace System besitzt in C++/CLI und C# die gleichen Methoden, es ist die gleiche Klasse. Unterschiedlich ist nur die Syntax wie damit umgegangen werden muss. Ausserdem gibt es in C# ein Keyword string, welches aber auch nur System.String bedeutet.
Falls C# die Sprache der .NET-Umgebung ist, wie sehr unterscheidet die sich von C++?
1. C++ ist NICHT C++/CLI - was also ist die Frage?
-
Meine Frage war, wie sehr sich der Code(Syntax) von C/C++-Konsolenanwendungen dem der "Windows-Forms-C++/CLI" unterscheidet damit ich in etwa den Aufwand abschätzen kann.
Ich bin bisher noch nie mit C#/C++/CLI in Berührung gekommen.
-
Mit was für einer Sprache machst du deine Windows Forms Anwendung wenn nicht mit C#!?
C# ist prinzipiell erstmal nur nur eine von vielen .NET Sprachen, aber man könnte es als die .NET Sprache bezeichnen...
-
Ja eben! das wusste ich bis vor 5 Minuten garnicht
Ich hatte von Anfang an ne falsche Annahme das es C++ wäre - Mein Fehler.
Ich glaube aber das driftet jetzt alles etwas in die falsche Richtung ab...
/edit:Danke für "dein Edit", jetzt wird mir die Sache etwas klarer
-
Wie sehr unterscheidet sich C++ von C++/CLI:
Sehr - nicht nur Syntaktisch.
Will heissen, wenn jmd. C++ kann heisst das noch lange nicht dass dieser jmd. auch C++/CLI kann.
C++/CLI braucht (tiefergehendes) .NET Wissen wohingegen bei C++ eben C++ (native) Wissen gebraucht wird.
-
Ok, mal rein prinzipiell.
Du hast auf der einen Seite C++, das kompiliert zu native Code.
Auf der anderen Seite hast du .NET (CLI), das ist eben managed Code.
Dann gibt es alle möglichen Sprachen die auf .NET aufsetzen und zu managed Code kompilieren, unter anderem C# (könnte man als die native Sprache von .NET sehen, es gibt aber natürlich auch noch z.B. Visual Basic .NET, F# etc.).
Dazwischen gibt es noch C++/CLI. Dabei handelt es sich mehr oder weniger um eine eigene Sprache, die als Brücke zwischen native und managed Welt gedacht ist. Ein Anfänger sollte um C++/CLI einen großen Bogen machen, denn C++/CLI ist im Prinzip der Ort wo die ganze Komplexität der zwei Welten aufeinanderprallt.Willst du Windows Forms Anwendungen schreiben dann nimm C#.