Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C# und .NET ::  NET-Komponenten in native Programme einbinden     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
wischmop2
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.04.2001
Beiträge: 289
Beitrag wischmop2 Mitglied 20:13:00 30.07.2002   Titel:   NET-Komponenten in native Programme einbinden            Zitieren

Tach auch,

ich würde gerne in meinem C++ Programm die Möglichkeit einbauen, verschiedene Komponenten, die die CLR (Common Language Runtime) benötigen einzubinden.

Java-Klassen kann ich bereits schon einbinden, indem ich zunächst die VRE ("Virtual Runtime Environment" = "CLR" für Java) in Form einer DLL lade und dann einiger Funktionen in der DLL die Java-Klasse lade und darin eine Methode aufrufe.

Nun hätte ich auch gerne eine solche DLL für die CLR, um .NET Programme / Bibliotheken zu verwenden. (Mein Programm soll nämlich auf jeden Fall nativ bleiben!) Gibt es sowas nicht? Habe schon viel gesucht und nichts gefunden, nur eine ähnliche Sache zum ROTOR-Projekt, aber das lässt sich wohl nicht auf das jetzige NET Framework übertragen...

Hat da jemand eine Idee, oder weiss jemand zumindestens ob das Grundsätzlich geht ? (Oder bietet M$ so eine separate DLL extra nicht an, damit man auch schön sein C++ Programm direkt in NET-Code übersetzt?)

Vielen Dank,

Wischmop
Scania V8
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.08.2001
Beiträge: 260
Beitrag Scania V8 Mitglied 11:57:00 07.08.2002   Titel:              Zitieren

Stichwort: RCW ( Runtime callable wrapper )
Scania V8
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.08.2001
Beiträge: 260
Beitrag Scania V8 Mitglied 11:59:00 07.08.2002   Titel:              Zitieren

Wo liegt eigentlich genau dein Problem ( wegen Äußerung im anderen Thread )???
wischmop2
Unregistrierter




Beitrag wischmop2 Unregistrierter 17:58:00 07.08.2002   Titel:              Zitieren

Ich stelle mir das so vor, dass eine Partnerfirma von uns, uns diverse Komponenten als NET-Code zur Verfügung stellt und wir diese dann in unser Programm einbinden. Auf eine separate Middleware wollen wir aber verzichten, denn dann hat man das Problem, dass Kunde A diese Middleware bevorzugt und Kunde B eine andere,... soll quasi alles aus einem Guss sein. (bzw. so aussehen!)

Eine andere Partnerfirma entwickelt bereits mit Java. Solche class-Dateien in unser natives Programm einzubinden ist kein Problem. Dafür lade ich unter Windows die jvm.dll, unter Linux die libjava.so (oder war's libjvm.so???), rufe dort diverse Funktionen auf, mit denen ich als erstes eine JVM-Instanz erstelle, und anschliessend über diese Instanz und den in der Lib. enthaltenen JNI-Funktionen, Methoden aus der Class-Datei aufrufe, etc.

So etwas würde ich halt nun gerne auch mit NET-Code machen.
Mein Problem ist nun, dass ich nicht weiss wie! Zu JNI gibt's haufenweise Dokumentation, deshalb läuft das ja auch schon perfekt, aber zu .NET ... Soweit ich weiss (glaube ich schon herausgefunden zu haben), benötige ich die DLL's mscoree.dll oder mscorlib.dll, aber dann hört's bei mir schon auf.

Kennst Du da nen coolen Link, ein Tutorial oder einen Codeschnipsel?
Bin da echt für jeden Tip dankbar. Auch wenn ich da in eine falsche Richtung denke, wär's gut zu wissen.

vielen Dank,
Wischmop
Scania V8
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.08.2001
Beiträge: 260
Beitrag Scania V8 Mitglied 20:48:00 07.08.2002   Titel:              Zitieren

Kurze Zwischenfrage:
1. .NET-Framework normal installiert ( klingt nämlich irgend wie anders! )
2. Kann Zugriff auch über COM durchgeführt werden?
3. Oder muss die .NET DLL Unmanaged Export Methoden anbieten

P.S: Zu Punkt 3, dies weiß ich nur theoretisch, da ich keine Sprache, außer MSIL selber, kenne die dies Unterstützt!
wischmop2
Mitglied

Benutzerprofil
Anmeldungsdatum: 11.04.2001
Beiträge: 289
Beitrag wischmop2 Mitglied 11:14:00 08.08.2002   Titel:              Zitieren

Tja, ehrlich gesagt weiss ich dass noch nicht, was wir für .NET-Code bekommen bzw. was die erzeugen können.

Aber trotzdem, nur rein Theoretisch und auch wegen allgemeinerem Interesse:

Zur COM Komponente: Dazu rufe ich doch die Funktion DllGetClassObject (in C / WinAPI) auf, mit der entsprechenden ID der Komponente und erhalte einen Verweis auf die weitere Klassenbeschreibung. Ist das so richtig, oder völlig falsch? Danach weiss ich aber ohnehin nicht weiter, da ich mit COM noch nix gemacht habe! (blamage... :D )
Aber soweit ich das verstanden habe, gibt es dann doch keinen Unterschied zu anderen COM Komponenten, oder? Wenn ja, dann werde ich dazu bestimmt ein paar Tuts finden, oder besser, Du kennst welche :)

Aber zum letzten Punkt:
Zitat:

3. Oder muss die .NET DLL Unmanaged Export Methoden anbieten


Tja, was wir kriegen weiss ich noch nicht (werde ich gleich mal nachfragen), aber Unmanaged exportierte Funktionen sind doch IMHO normale DLL-Funktionen, wie in jeder anderen DLL auch, oder? Dann müsste ich einfach mit
C++:
 handle = LoadLibrary("dll-name")
die DLL laden (in C / WinAPI) und mit
C++:
 func = GetProcAdress(handle, "func-name")
die Adresse der Funktion bekommen. Oder habe ich da etwas mit "unmanaged Export Methoden" falsch verstanden.

Aber was mich viel mehr interessiert ist (wenns in .NET überhaupt geht :confused: ), wie man Managed (Export) Methoden von der nativen Seite ansprechen kann, so mit Parameter-Marshaling etc. (so wie's auch mit Java geht).

Also, der letzte Punkt brennt mir persönlich unter den Fingernägeln, aber auch bei den anderen Punkte scheine ich noch Erklärungsbedarf zu haben...

Achja,
Zitat:
1. .NET-Framework normal installiert ( klingt nämlich irgend wie anders! )

Das habe ich verstanden (stolz), war mir schon klar, sonst habe ich ja gar keine Laufzeitblibliotheken für .NET-Code, etc.
Trotzdem schon mal vielen Dank für dene Mühe!

Viele Grüsse,
Wischmop
c++.de :: C# und .NET ::  NET-Komponenten in native Programme einbinden   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.