So rufen Sie eine C#-Bibliothek aus nativem C mithilfe von IJW auf
Hintergrund:
Es besteht die Notwendigkeit, ein C# zu integrieren Bibliothek in nicht verwalteten C-Code. Unter den verfügbaren Methoden scheinen Interlace Services mit C /CLI und IJW (Interoperabilität mit JavaScript und Windows Runtime) vielversprechend zu sein.
Frage:
-
Vorteile von IJW: Bietet IJW Vorteile gegenüber COM-Objekten oder PInvoke?
-
C /CLR-Wrapper: Wie können Sie einen C /CLR-Wrapper erstellen, der IJW zum Aufrufen von a verwendet C#-Bibliothek?
-
Native C-Integration: Wie verbindet man eine nicht verwaltete C-Datei mit einer C-/CLR-Bibliothek?
Antwort:
1. Vorteile von IJW gegenüber COM Objects und PInvoke:
- IJW vereinfacht den Prozess der Übergabe und des Abrufs von Daten zwischen verwaltetem und nicht verwaltetem Code.
- Es macht manuelles Marshalling überflüssig Datenkonvertierung.
2. Erstellen eines C/CLR-Wrappers mit IJW:
-
Erstellen Sie eine neue C/CLI-Klasse:Fügen Sie Ihrem Projekt eine C/CLI-Klasse hinzu und benennen Sie sie entsprechend.
-
CLR-Unterstützung aktivieren: Klicken Sie mit der rechten Maustaste auf die .cpp-Datei der neuen Klasse und aktivieren Sie /clr in den Projekteigenschaften.
-
Namespace-Referenzen hinzufügen: Verwenden Sie die Eigenschaft „Zusätzliche #using-Verzeichnisse“, um einen Verweis auf den Speicherort Ihrer C#-DLL hinzuzufügen.
3. Native C-Integration:
-
C /CLR-Header einschließen: Fügen Sie in die nicht verwaltete C-Datei die von der C /CLR-Wrapper-Klasse generierte Header-Datei ein.
-
Erstellen Sie eine Instanz der Wrapper-Klasse:Verwenden Sie den Konstruktor der Wrapper-Klasse, um ein Objekt zu instanziieren.
-
Verwaltete Methoden aufrufen:Zugreifen auf die verwalteten Methoden von die C#-Bibliothek über das Wrapper-Klassenobjekt.
Beispielcode:
Native.h:
void NativeWrapMethod();
Nach dem Login kopieren
Native.cpp:
#using "mscorlib.dll"
#using "MyNet.dll"
using namespace MyNetNameSpace;
void NativeWrapMethod()
{
MyNetNameSpace::MyManagedClass::Method(); // static method
}
Nach dem Login kopieren
Mit diesem Ansatz können Sie eine verwaltete C#-Klasse und ihre Methoden aus nativem C-Code aufrufen.
Das obige ist der detaillierte Inhalt vonWie kann IJW für die nahtlose C#-Bibliotheksintegration in Native C genutzt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!