Frage

Ich brauche Prozess Injektion unter Verwendung von C ++ zu tun, aber ich würde es vorziehen, C # für alles anderes als die niedrige Niveau Sachen zu verwenden. Ich habe über „Funktion wrapping“ gehört und „Marshalling“ und haben einiges an Google-Suche durchgeführt und haben Bits an Informationen hier und da gefunden, aber ich bin immer noch wirklich fehlt.

Dinge, die ich habe, um von Nutzen zu lesen;
http://msdn.microsoft.com/en-us /library/ms235281(VS.80).aspx
http://www.drdobbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/ 08 / Aufruf-c-lib-from-c.html

Wie kann ich die ganze untere Ebene stuff (native C ++) in C # wickeln, so kann ich leicht, diese Funktionen in einer Sprache, befehle ich bin wohler mit, C #?

Alle Informationen zum Thema wird sehr geschätzt.

War es hilfreich?

Lösung

ich denke, P / Invoke ist wirklich der einfachste Ansatz:

  • Erstellen Sie eine DLL in nicht verwaltete C ++, enthält alle Funktionen, die Sie benötigen die Injektion zu tun.
  • Sie in Ihrem C # -Code, erklären einige static extern Methoden und verwenden Sie die DllImport Attribut in Ihre C ++ dll zu zeigen. Weitere Einzelheiten finden Sie den Link zur Verfügung gestellt von arul in seine Antwort .

Beachten Sie, dass P / Invoke nicht auf „Windows-API-Funktionen“ beschränkt ist -. Sie beliebigen nativen DLL ausgesetzt Funktionen aufrufen

Ein möglicher Nachteil von P / Invoke ist, dass Sie die Unterschriften für Ihre C ++ Funktionen zur Verfügung zu stellen haben, möglicherweise etwas weniger als offensichtlich Rangier angeben. In diesem Fall könnte erwägen Sie einen COM-Server anstelle eines „plain“ DLL Konstruktion und mit COM-Interop Code von C # nennen.

Andere Tipps

Sie möchten P / Invoke verwenden, finden Sie unter MSDN Magazine .

Wenn Pinvoking ist nicht das, was Sie tun wollen, dann erstellen Sie eine verwaltete C ++ Anwendung. Verwenden Sie native C ++, den Prozess Injektion Sachen zu tun. Verwenden Sie verwaltete c ++ eine .NET-freundliche Schnittstelle zu diesem nativen Verhalten zu schaffen. Dies kann dann von C # aufgerufen werden.

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