Interaktion mit anderen Programmiersprachen

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Tobias Wagner (none_at_rz.uni-karlsruhe.de)
Date: 07/01/04


Date: Thu, 1 Jul 2004 12:56:10 +0200

Ich entwickle Optimierungsverfahren in einer Firma. Diese Firma arbeitet mit
Delphi 5 und Windows. Meine Optimierungsverfahren entwickle ich in C++ unter
Linux und Windows. Dabei verwende ich weitere Bibliotheken (mit Templates).
Studenten entwickeln Komponenten für die Optimierungsverfahren mit Java
unter Linux und Windows.
Als Frontend kommen Delphi-Anwendungen und MS Excel/Access-Anwendungen zum
Einsatz.

Auf Delphi-Komponenten greife ich über eine Wrapper-Dll zu, die Objekte in
Funktionsaufrufe mit Pointern kapselt. Auf die selbe Art und Weise stelle
ich meine Klassen in C-Dlls mit stdcall zur Verfügung. Per VBA binde ich
diese Dlls in Excel bzw. Access ein. Damit das klappt brauche ich stdcall
und darf nur int, double, char* und einfache C-structs verwenden. Auf die
Dauer ist die Pflege dieser Wrapper-Funktionen recht zeitaufwändig.
Auf Java greife ich nur indirekt zu, indem ich Config-files in den Temp-Pfad
schreibe und dann ein Java-Programm starte dessen Ergebnisdateien ich
anschließend auslese.

Ich würde dieses Szenario gerne "modernisieren" und wenn das vernünftig
machbar ist mehr in Richtung C#/.Net schieben.
Wenn jemand Vorschläge hat, wie man das Ganze verbessern kann, bin ich für
Tipps sehr dankbar. Allerdings kann ich meiner Firma weder Delphi *5* noch
den Studenten Java wegnehmen oder meine Klassen komplett in C# umwandeln.

Deshalb würde mich interessieren, wie C# mit anderen Programmiersprachen
interagieren kann:

Wie greife ich von C# auf C++ Klassen zu? Kann ich evtl sogar von
spezifizierten C++-Templates erben?

Wie kann VBA auf C# Klassen zugreifen. Muss ich dazu über COM gehen oder
wieder mit Wrapper-Dlls?

Delphi sollte über die selbe Metho*** wie VBA auf C# Klassen zugreifen
können, aber wie kann C# auf Delphi zugreifen?

Java: Kann ich Java Objekte aus C# erzeugen? Welche Änderungen sind dazu in
den Java-Klassen erforderlich? Kann Java evtl auch auf C# Klassen zugreifen?
Das Zusammenspiel C#-Java sollte auch unter Linux funktionieren, da die
Optimierungsverfahren auf Linux-Clustern ihre Tauglichkeit unter Beweis
stellen müssen, bevor sie dann in kommerzielle Produkte - meist unter
Windows - einfließen.

-- 
Tobias Wagner

Quantcast