direkt eine Managed API Zugriff auf
Wenn ein nicht verwalteten Client in C++ geschrieben ist, kann es mit der Visual Studio .NET C++ Compiler als „gemischter Modus kompiliert werden Bild." Nachdem dies getan ist, kann der nicht verwaltete Client direkt auf alle verwalteten API zugreifen. Einige Codierungsregeln gelten jedoch für Zugriff auf verwaltete Objekte von nicht verwalteten Code; Weitere Informationen finden Sie in der C++ Dokumentation.
Direktzugriff ist die bevorzugte Option , da es keine spezielle Berücksichtigung von verwalteten API Entwickler benötigt. Sie können ihre verwaltete API gemäß der verwaltete API Designrichtlinien (DG) entwerfen und davon überzeugt sein, dass die API weiterhin für nicht verwaltete Anrufer zugänglich sein wird .
eine Managed API als COM-API können
Jede öffentliche verwaltete Klasse nicht verwaltete Clients durch COM-Interop ausgesetzt werden aussetzt. Dieser Prozess ist sehr einfach zu implementieren, da die COM-Interop Schicht kümmert sich um alle COM Sanitär. So scheint zum Beispiel jede verwaltete Klasse IUnknown, IDispatch, ISupportErrorInfo und einige andere Standard-COM-Schnittstellen zu implementieren.
Trotz der Tatsache, dass verwaltete APIs als COM-APIs ist einfach, verwaltet und COM-Objekt-Modelle sind sehr unterschiedlich. Daher sollte die Offenlegung der verwalteten API für COM immer eine explizite Entscheidung sein. Einige Funktionen, die in der verwalteten Welt verfügbar sind, haben keine Entsprechung in der COM-Welt und werden nicht von COM-Clients verwendet werden. Wegen dieser, gibt es oft Spannung zwischen verwalteten API-Design-Richtlinien (DG) und Kompatibilität mit COM.
Wenn COM Kunden wichtig sind, schreiben Ihre verwalteten API nach den API-Design-Richtlinien verwaltet und dann eine dünne COM freundlich verwaltet Wrapper um Ihre verwalteten API schreiben, die wird für COM verfügbar gemacht werden.
eine Managed API als Wohnung API freilegen
Manchmal nicht verwalteten Clients nicht COM verwenden können. Zum Beispiel könnten sie bereits geschrieben werden, um flache APIs zu verwenden, und können nicht geändert oder neu kompiliert werden. C++ ist die nur High-Level-Sprache, die ermöglicht Sie verwaltete APIs als flache APIs verfügbar machen. Doing this ist nicht so unkompliziert wie eine verwaltete API als COM-API offen legen. Es ist eine sehr erweiterte Technik, die fortgeschrittene Kenntnisse von C++ - Interop und die Unterschiede zwischen den verwalteten und nicht verwalteten Welten erfordert.
Zeigen Sie Ihre verwaltete API nur dann als flache API an, wenn dies unbedingt erforderlich ist. Wenn Sie keine Wahl haben, achten Sie darauf, die C++ - Dokumentation zu überprüfen und von allen Einschränkungen vollständig zu kennen.
möglich Duplikat von [Wie C# Methoden exportieren?] (Http://stackoverflow.com/questions/2082159/how-to-export-c-methods) –