Frage

Ich habe eine C ++ DLL, die eine Funktion (einen Wert übergeben, geben einen Wert zurück) in einer C # Klassenbibliothek aufrufen muss.

Ist meine einzige Option, um dem C # DLL eine COM-Schnittstelle zu geben und es von C ++ mit IDispatch nennen?

Ist dies die beste Methode?

War es hilfreich?

Lösung

Ein paar Möglichkeiten für Sie hier

  1. Verwenden Sie eine Mixed-Mode-C ++ / CLI Baugruppe als eine Brücke zwischen dem C ++ und C # DLL
  2. Verwenden Sie die eine COM-Brücke durch mehrere der wichtigsten C # -Typen als COM-Objekte freigelegt wird. Dies kann dann über den C ++ Code durch normale COM Semantik zugegriffen werden

Andere Tipps

Dieses Projekt dll Exporte für statische Methoden in Klassen erstellt. Sie könnten dann eine C # statische Methode von nicht verwalteten Code aufrufen.

Ein Ansatz, der es aber COM wäre funktionieren würde, nennen. Sie können das Regasm Werkzeug die erstellen COM-Wrapper.

Es ist nicht die nur Option.

Sie können auch Ihre C ++ DLL als verwaltete DLL kompilieren.

Sie können Ihren C # DLL als Service Host und Remote hinein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top