C# Objekt mit C Schnittstelle versehen

Hallo zusammen,
ich glaub ich bin zu blöd zum googeln :wink:

Ich würde gerne ein C# Objekt mit einer C Schnittstelle versehen und ich finde immer nur [DllImport()] aber das ist ja wenn man eine C-Bibliothek importieren möchte!?

Oder bin ich jetzt einfach nur zu verwirrt um das zu begreifen!?

Vielen Dank schon mal für Entwirrung und Erklärung :smile:

Viele Grüße
/silvl

Hi!
Da wirst Du meiner Meinung nach nicht viel Glück haben, das geht so nämlich nicht.
Scheitert u.a. schon daran, dass die Funktionen in C-DLLs eben genau das sind: Funktionen. Und bei C# gibt es keine Funktionen, nur Methoden in Klassen.

Was Du machen kannst, ist, eine C#-Klasse für COM zu registrieren, aber auch da muss dann halt der Client über CoCreateInstance() o.ä. Instanzen Deiner Klasse erzeugen. Ein Zugriff über LoadLibrary() und anschließendes GetProcAddress() ist hier nicht möglich.

Was ich mir höchstens vorstellen könnte, wäre, eine Mixed-Mode DLL zu erstellen, die die gewünschten Funktionen exportiert.
In dieser Mixed-Mode DLL referenzierst Du dann Deine C#-Assembly und kannst somit auch Instanzen Deiner C#-Klasse erstellen und im Rahmen von Funktionen damit rumhantieren.

Funktioniert, erscheint mir aber ein wenig wie „von hinten durch die Brust ins Auge“…

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi zusammen,

Danke für die Antwort :smile:
Das Problem ist, dass es die C Bibliothek schon lange gibt und weiterverwendet werden soll…
Ich hab jetzt allerdings über Funktionspointer auf der C-Seite und Delegaten auf der C#-Seite eine Möglichkeit gefunden, dass die C-Funktionen auf die C#-Objekte zugreifen können.

viele Grüße
/silvl