Frage

Ich möchte eine C # -Projekt erstellen und die vorhandenen nativen (C ++) Code zu implementieren. Kennt jemand über jedes gutes Tutorial darüber?

Danke!

War es hilfreich?

Lösung

Sie können P / Invoke verwenden, und Sie können nicht verwaltete Methoden aufrufen. Ich werde Ihnen einige Beispiele veröffentlichen: Diese ist ein Verweis auf MSDN offizielle Dokumentation. Diese ist eine Gemeinschaft mit den meisten der gängigen Windows nicht verwalteten Bibliotheken zusammen mit Methodensignaturen und Beispiele Website mantained

Andere Tipps

Wenn Ihr C ++ Code verwaltet wird (wie Sie sagen), dann würde ich vorschlagen, dass Sie es als C verlassen ++ es sei denn, Sie haben einen sehr guten Grund - Zukunft C # (etc.) Baugruppen der Lage sein sollte, um es nur Referenz ‚wie besehen‘.

Ich gehe davon aus von implementieren den vorhandenen Code Sie meinen Sie es aus C #, mit minimalen Änderungen an den C ++ Code aufrufen möchten.

Ich bin ein Fan und den letzten Käufer des Buches C ++ / CLI in Aktion die hat ein paar nützliche Beispielkapitel online.

Das Intro auf Codeproject ist ein guter Ausgangspunkt.

Der Autor von C ++ / CLI in Aktion eine Reihe von Artikeln über Codeproject hat, scrollen Sie zum C ++ / CLI Abschnitt seinen Index .

Wikipedia-Artikel über P / Invoke hat eine Reihe von Gründen, warum Sie nicht wollen, könnten diesen Ansatz zu verwenden, mit denen ich zustimme:

  • Verlust der Eingabe einer Unterstützung durch den Compiler
  • möglich Datentyp oder Ausrichtungsprobleme, wie Sie Arten von Hand zur Karte haben
  • müssen Garbage Collection Objekte
  • zu

Der beste Ausgangspunkt auf MSDN ist der Zusammenfassung Artikel .

Die wahrscheinlich einfachste Weg, dies zu tun, ist eine C ++ / CLI-Projekt zu erstellen, die es Ihnen ermöglichen, verwaltete und nicht verwaltete C ++ zu mischen. Sie können Ihre bestehenden unmanaged C ++ Klassen mit einem verwalteten .Net Wrapper dann wickeln die Ihre C # -Code direkt anrufen können. MSDN Magazin hat eine gute einführende Artikel rel="nofollow auf C ++ / CLI.

Interop wird nur dann wirklich nützlich für den Aufruf von C-Stil-Funktionen. Sie können es nicht wirklich verwenden mit reinen C ++ Klassen zu interagieren.

habe ich gelernt, dies es zu tun, so dass ich nicht ein gutes Tutorial, aber es gibt ein paar Dinge, die Sie bewusst sein müssen - Managed C ++ und C ++ / CLI beide integrieren mit unmanaged Code mit sehr wenigen hässlichen Nähte. Dies ist nicht der Fall mit C #. In verwalteten C ++, dann ist es durchaus möglich, so etwas zu tun:

dotNetForm->Text = S"My Project"; // regular managed code
::SetWindowText(dotNetForm->Handle, "Your Project"); // mixed managed/unmanaged

während in C # möchten Sie P haben / Invoke in SetWindowText - nicht, dass Sie wirklich würde: es ist nur ein einfaches Beispiel, aber Sie müssen sich bewusst sein, dass das verwaltete C ++ Compiler eine seltsame Kombination aus tun viel Interop ist für Sie transparent und zugleich für Sie nichts zu tun (dh, es wird keinen impliziten marashalling tun).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top