Eine einfache Möglichkeit, C ++ aufzurufen, besteht darin, eine Wrapper-Assembly in C ++ / CLI zu erstellen. In C ++ / CLI können Sie nicht verwalteten Code aufrufen, als ob Sie nativen Code schreiben würden, aber Sie können C ++ / CLI-Code von C # aus aufrufen, als ob er in C # geschrieben wäre. Die Sprache wurde im Wesentlichen mit Interop in vorhandene Bibliotheken als "Killer-App" entwickelt.
Zum Beispiel - kompilieren Sie dies mit dem Schalter / clr
P / Invoke ist eine nette Technologie und funktioniert ziemlich gut, mit Ausnahme von Problemen beim Laden der Ziel-DLL-Datei. Wir haben festgestellt, dass der beste Weg, dies zu tun, darin besteht, eine statische Bibliothek nativer Funktionen zu erstellen und diese mit einem davon abhängigen verwalteten C ++ - (oder C ++ / CLI-) Projekt zu verknüpfen.
Die dafür verwendete Technologie heißt P / Invoke . Sie können nach Artikeln zu diesem Thema suchen. Beachten Sie, dass C für den Aufruf von C # und nicht für C ++ verwendet wird. Sie müssen Ihren C ++ - Code also in einen C-Wrapper einschließen, den Ihre DLL exportiert.
Antworten:
Eine einfache Möglichkeit, C ++ aufzurufen, besteht darin, eine Wrapper-Assembly in C ++ / CLI zu erstellen. In C ++ / CLI können Sie nicht verwalteten Code aufrufen, als ob Sie nativen Code schreiben würden, aber Sie können C ++ / CLI-Code von C # aus aufrufen, als ob er in C # geschrieben wäre. Die Sprache wurde im Wesentlichen mit Interop in vorhandene Bibliotheken als "Killer-App" entwickelt.
Zum Beispiel - kompilieren Sie dies mit dem Schalter / clr
Fügen Sie dann in C # einen Verweis auf Ihre ManagedType-Assembly hinzu und verwenden Sie ihn wie folgt:
In diesem Blogbeitrag finden Sie ein ausführlicheres Beispiel.
quelle
Ich bin mit der von Ihnen erwähnten Bibliothek nicht vertraut, aber im Allgemeinen gibt es mehrere Möglichkeiten, dies zu tun:
quelle
P / Invoke ist eine nette Technologie und funktioniert ziemlich gut, mit Ausnahme von Problemen beim Laden der Ziel-DLL-Datei. Wir haben festgestellt, dass der beste Weg, dies zu tun, darin besteht, eine statische Bibliothek nativer Funktionen zu erstellen und diese mit einem davon abhängigen verwalteten C ++ - (oder C ++ / CLI-) Projekt zu verknüpfen.
quelle
Ja, es heißt P / Invoke .
Hier ist eine großartige Ressourcenseite für die Verwendung mit der Win32-API:
http://www.pinvoke.net/
quelle
Sicher ist. Dieser Artikel ist ein gutes Beispiel für etwas, das Sie tun können, um damit zu beginnen.
Wir tun dies von C # auf unseren Windows Mobile-Geräten mit P / Invoke .
quelle
Die dafür verwendete Technologie heißt P / Invoke . Sie können nach Artikeln zu diesem Thema suchen. Beachten Sie, dass C für den Aufruf von C # und nicht für C ++ verwendet wird. Sie müssen Ihren C ++ - Code also in einen C-Wrapper einschließen, den Ihre DLL exportiert.
quelle
Haben Sie über Apache Thrift nachgedacht?
http://thrift.apache.org/
Es scheint eine sehr sehr saubere Lösung zu sein.
quelle