Was sind meine Optionen für C ++ DLL eine C # DLL anrufen?
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?
Lösung
Ein paar Möglichkeiten für Sie hier
- Verwenden Sie eine Mixed-Mode-C ++ / CLI Baugruppe als eine Brücke zwischen dem C ++ und C # DLL
- 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.