Einfachste Möglichkeit, P / Invoke Code zu generieren?
Ich bin ein erfahrener .Net-Programmierer sind, aber nicht kompiliert ein C/C++ - Programm in meinem Leben. Jetzt habe ich das C-dll, Kopf-und Dokumentation (3rd party, nicht von der Win-API), von denen muss ich anrufen über zehn Methoden.
Ich dachte, der mithilfe von Platform Invoke. Fand ich diese drei tools, die den code für mich:
- PInvoker: http://www.pinvoker.com
- P/Invoke Interop Assistant: http://www.codeplex.com/clrinterop
- P/Invoke-Assistenten: http://www.paulyao.com/res/pinvoke/pinvoke.aspx
und möglicherweise
- Schluck: http://www.swig.org/
Pinvoker scheint einen etwas anderen Ansatz als die Interop-Assistent und der Assistent. Schluck ich habe gerade festgestellt, bei der überprüfung, dass diese Frage nicht schon hier gestellt.
Was sind die vor-und Nachteile dieser tools?
Was wäre der beste = einfachste und sicherste Weg für mich zu produzieren, die P/Invoke-code gegeben, ich weiß nicht viel über C/C++?
InformationsquelleAutor der Frage Ope | 2010-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen http://dotnetperls.com/dllimport-interop für eine interop-Beispiel, und dies MSDN-Artikel für mehr info. Die Bibel für dieses Zeug ist Adam Nathan, der buchen.
Grundsätzlich müssen Sie identifizieren die Funktionen in der DLL, die Sie anrufen möchten. Diese müssen markiert mit extern zugänglich zu machen, die außerhalb der Welt. Der nächste Schritt, was kann knifflig ist das schreiben einer DllImport für die Funktion. Dies muss die Zuordnung zwischen den verwalteten und nicht verwalteten Welten. Sie müssen herausfinden, wie Marschall, beliebig komplexe Daten-Strukturen aus der C-dll in verwaltetem code.
Sollten Sie überprüfen, um zu sehen, ob es irgendeine Art von COM-Schnittstelle zu der DLL. Stellen Sie sicher, dass Sie wirklich brauchen, um mit P/Invoke-ersten.
SCHLUCK wurde ursprünglich für die Verpackung C/C++ - code zur Verwendung von Skript-Sprachen. Es erzeugt C# - code aus einer interface-Beschreibung (siehe tutorial). Ich würde nicht empfehlen die Verwendung von C# wenn P/Invoke ist eine option.
InformationsquelleAutor der Antwort Brian Lyttle
wenn die Signaturen der Funktionen, die einfach sind, dann dauert es 10 Minuten, um das setup - ie, wenn Sie nehmen 2 char * und int zurückgeben. Seine nur, wenn Sie kompliziert ist, wird es chaotisch
Die Bibel auf pinvoke ist Adam Nathans, - .NET-und COM: Die Vollständige Interoperabilität Guide
Und ich Stimme mit anderen poster - Schluck ist nicht das richtige
InformationsquelleAutor der Antwort pm100