Laden...

Allgemeine unmanaged Wrapper-DLL für C#-Bibliotheks-Assemblies

Erstellt von Rainbird vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.886 Views
Rainbird Themenstarter:in
3.728 Beiträge seit 2005
vor 16 Jahren
Allgemeine unmanaged Wrapper-DLL für C#-Bibliotheks-Assemblies

Hallo,

ich möchte gerne eine C#-Assembly von einer Anwendung aus In-Process aufrufen, deren Skriptspace (Ruby) mit nur native Win32-API-Aufrufe ermöglicht. Es ist eine eingeschränkte Version von Ruby (Bei vollwertigem Ruby würde ich einfach WIN32OLE.new aufrufen und den C#-Klassen eine COM-Schnittstelle verpassen).

Über eine in C++ geschriebene Wrapper-DLL sollte das zwar grundsätzlich klappen, aber ich hätte gerne eine generische Möglichkeit dies zu tun. So in der Art von Reflection. Hat jemand eine Idee, wie sowas zu bewerkstelligen sein könnte, ohne einen eigenen CLR-Host in C++ zu schreiben?

Wenn alle Stricke reißen, könnte ich es auch über das Microsft Script Control machen. Der C++ Wrapper würde ein Aufrufscript in VBScript erzeugen und darüber meine C#-Klassen über die COM-Dispatch-Schnittstelle aufrufen. Dieser Weg ist aber sehr hässlich und nicht besonders performant.

S
8.746 Beiträge seit 2005
vor 16 Jahren

Objektorientiert oder prozedural?

Statische Funktionen kann man ja via IL-Manipulation für unmanaged Dll-Zugriff frei machen. Ist zwar nen böser Hack, aber dank Tool schnell und einfach.

D
386 Beiträge seit 2007
vor 16 Jahren

"Boeser Hack"? Noe, vom Framework supported und nuetzlich aus meiner Sicht. Gut, es braucht einen Roundtrip mit Assembly -> IL -> Assembly, aber das ist eher eine Dummheit/ein Problem des C# Compilers..

Ich denke aber, dass der Threadstarter Zugriff auf Objekte haben will (daher Reflection als Keyword). Dafuer sehe ich keine einfache (und vor allem performante) Moeglichkeit.

Pound for pound, plutonium is about as toxic as caffeine when eaten.

Rainbird Themenstarter:in
3.728 Beiträge seit 2005
vor 16 Jahren
Prozedural

Es muss prozedural sein, genau wie die Win32-API. Gibt es da ein Tool oder eine Anleitung, wie man diesen Hack anwendet?

Das würde all meine Probleme lösen. Es muss nur funktionieren. Ich komme auch mit den Datentypen String, Double und Int aus.

S
8.746 Beiträge seit 2005
vor 16 Jahren
Rainbird Themenstarter:in
3.728 Beiträge seit 2005
vor 16 Jahren
Danke

Super, vielen Dank!