C#-DLL aus C-Programm aufrufen

jokey2

Erfahrenes Mitglied
Hallo Gemeinde!

Nach längerer Zeit melde ich mich mal wieder mit einer Frage:
Kann ich eine Funktion aus einer in C# erstellten DLL aus einem C-Programm (ja, tatsächlich 'C') aufrufen, und wenn ja, wie mache ich das?

Der Hintergrund ist Folgender:
Wir schreiben ein Testprogramm mit Oberfläche, das unter Anderem einen Vergleich von Testdaten ausführt und das Vergleichsergebnis anzeigt. Nun soll der Vergleich auch aus einem in C generierten Testcode aufgerufen werden, wo die Vergleichsfunktion true/false (also 1/0) zurückgeben soll, was dann zur Bewertung des Testergebnisses hinzugenommen wird. Da möchte ich natürlich in beiden Fällen die gleiche Vergleichsfunktion verwenden, um den Pflegeaufwand zu verringern, wenn sich der Vergleich ändern sollte.
Natürlich könnte ich auch die Vergleichsfunktion in C schreiben und diese Funktion aus dem C#-Programm aufrufen, aber andersherum wäre es mir lieber.

Kann ich also in meinem C-Testcode mittels LoadLibrary die DLL laden und mir die Adresse der Funktion mit GetProcAddress holen?
 

sheel

I love Asm
Hi

Nein, das geht leider nicht.
Schon zB. deswegen, weil es in C# ja keine Klassenlosen Funktionen gibt
(und in C keine Klassen...)
Die C#-DLL ist auch keine native DLL im C-Sinn usw.

Eine Möglichkeit wäre ein C++/CLI-Wrapper (naja, "++")
oder die Vergleichsfunktion eben in C schreiben.

Gruß
 

jokey2

Erfahrenes Mitglied
Wow, das ging aber schnell!! Ein Extrapunkt für Geschwindigkeit!

Eigentlich schade, das das so nicht geht, dann muss ich es wohl doch andersherum machen :(