C++ Klassen in C# verwenden?
-
Hi!
Wie schon im Titel steht möchte ich vorhandene C++ Klassen in C# verwenden!
Funktioniert sowas bzw. was muss man tun damit es funktioniert?
(in den Methoden werden WIN32 API Befehle verwendet GetCommState(..), SetCommState(...), .. alles was eben mit schreiben/lesen des COmPorts zu tun hat)Ich bin über jeden Hinweis dankbar! Habe zwar schon etwas von diesem DllImport oder so gelesen jedoch bezieht sich das ja auf Methoden? Ich will die vollständige Klassen verwenden können!
Danke
-
Hat niemand eine Idee? Mittels Platform Invoke kann man ja nur Funktionen einbinden? (DllImport o.ä.)
Wie sieht es mit gesamten Klassen aus? Tips, Anregungen sind sehr willkommen!
Danke
-
Die Klassen über C++/CLI implementieren und als Managed Klassen über ein Assembly einfügen.
-
Wenn es nur um den Comport geht, dann nutze doch einfach den SerialPort von .NET?!
-
Knuddlbaer schrieb:
Die Klassen über C++/CLI implementieren und als Managed Klassen über ein Assembly einfügen.
Danke für die Antwort! Jedoch verstehe ich nur Bahnhof!
Zu P/Invoke: Kann man damit nur Win32-API Fkt. aufrufen? (allg: nur Funktionen, keine Klassen)Ein Wrapper schreiben? Wie? Sinnvoll? Kann man dann die C++ Klassen uneingeschränkt verwenden?
@SeboStone: Es liegt nicht nur an diesen COM-Fkt.! Werden noch einige andere Fkt. verwendet und ich will das ganze nicht umschreiben!
-
Ist dies so kompliziert/sinnlos/etc. , weil es keine Antworten bzw. Tipps gibt?
Sowas noch nie jemand benötigt?
lg
-
Es wurde an sich bereits alles zu dem Thema gesagt.
PInvoke ermöglicht den Zugriff auf exportierte Funktionen einer DLL.
Um Klassen einzusetzen würde es sich empfehlen, diese in C++/CLI zu Kapseln und über einen Wrapper verfügbar zu machen.
Beschäftige Dich mal mit dem Projekttyp Visual C++::Klassenbibliothek
-
Ist das die richtige Vorgehensweise zum schreiben eines Wrapper für C++ Klassen?
Gibt's Tipps? Tricks? Was sollte man noch dazu wissen!
-------
Wie sieht es aus wenn ich 2 *.dll erstellen (Klassenbibliotheken) für meine 2 Klassen ...... in C# möchte ich einer Funktion der Klasse A eine Objekt der Klasse B übergeben!?in etwa so:
ClassA cA = new ClassA(); ClassB cB = new ClassB(); ... cB.Init(cA);
Geht sowas, wenn ja, Wie?
Ist es sinnvoll in eine .dll mehrere Klassen zu wrappen? Bzw. wie?