2010-11-27 10 views
2

Gibt es eine empfohlene Möglichkeit, eine native C++ - Bibliothek mit C++ CLI zu umhüllen?C++/CLI-Wrapper-Frage

+0

Was meinst du? Ich denke, das hängt ganz davon ab, was Sie erreichen wollen. Damit. Was versuchst du zu erreichen? – BastiBen

+2

Sie können die systemeigene C++ - Bibliothek in C++/CLI verwenden, ohne sie zu "verpacken". –

+0

Sie können nicht, keine gute Möglichkeit, die Konstruktor und Destruktor Aufrufe pinvoke. –

Antwort

6

Nicht sicher, ob eine Größe alle passt, aber ja, es ist weitgehend ein mechanischer Prozess. Ihr Ref-Klassen-Wrapper sollte ein privates Member deklarieren, das ein Zeiger auf Ihre native C++ - Klasse ist. Erstellen Sie die Instanz im Konstruktor. Sie benötigen einen Destruktor und einen Finalizer, um diese Instanz erneut zu löschen.

Dann schreiben Sie für jede Funktion in der nativen C++ - Klasse eine verwaltete Version davon. Das ist fast immer ein Eins-zu-Eins-Aufruf, Sie rufen einfach die entsprechende native Methode auf und lassen C++ Interop die Argumente konvertieren. Manchmal müssen Sie ein wenig Klebstoffcode schreiben, um ein verwaltetes Argument in die native Version zu konvertieren, insbesondere wenn Ihre native Methode 8-Bit-char * - oder Strukturargumente verwendet.

Sie finden das Standardmuster in Code in my answer here. Ich sollte auch SWIG erwähnen, ein Werkzeug, das es automatisieren kann. Nicht sicher, wie gut es ist, habe es nie selbst benutzt.