Wie rufe ich .NET-Code von meinem un-Managed C ++ Code in Windows und umgekehrt verwaltet?
Frage
Ich habe eine reine C ++ Anwendung mit VC 6.0 entwickelt. Ich würde diese Anwendung wie auf die Verwendung einer Bibliothek entwickelt in C # zu machen. Wie rufe ich die Methoden in der C # Bibliothek aus meiner Heimat ausführbaren? Ich will nicht meine un-Managed C ++ native Anwendung verwalteten Code konvertieren. In ähnlicher Weise wie mache ich das Gegenteil? Ist PInvoke die einzige Option? Ich würde alle Verweise oder Zeiger für das gleiche zu schätzen wissen.
Lösung
So rufen in verwalteten Code von nicht verwalteten C ++, verwenden Sie ClrCreateManagedInstance oder Ihre Arten in Ihrem verwalteten Assembly als COM sichtbar, exportieren und COM verwenden. Um in den nicht verwalteten Code aufrufen aus verwaltet wird, verwenden COM oder P / Invoke.
Andere Tipps
Microsofts Hauptleitung hierzu COM-Interop verwenden. Es gibt jedoch ein weitere Option, die manchmal als "Reverse P / Invoke" gibt es eine interessante Blog-Post hier und einige weitere hier
Auch wenn Sie Delphi.NET (heute nicht mehr existierenden) haben diese Sprache ermöglicht es Ihnen, statische Methoden, wie Sie würde jede DLL-Funktion dann exportieren können Sie in die Delphi.NET Montage nennen wie eine normale nativen DLL.