Ich habe einen Legacy-Code in C (nicht C++) implementiert. Ich möchte in der Lage sein, einige Methoden in diesem C-Code von meinem C# -Code (unter Windows) aufzurufen. Was wäre der beste Ansatz, um zwischen den beiden Sprachen zu kommunizieren? Bitte beachten Sie, dass die Methode in C nicht zustandslos ist. Wir müssen zwei Methoden aufrufen:im Gespräch mit C von C#
- Initialisierung() => Dies wird die Datenstruktur initialisieren und Daten von Dateien in den Speicher laden. Diese Methode wird einmal aufgerufen.
- ComputeSomething (Parameter) => es wird mehrere Aufrufe von C# zu dieser Methode geben.
Hinweis: Diese beiden Methoden tatsächlich mehrere andere Methoden aufrufen, aber diese sind nur die beiden Methoden, die wir zu C# aussetzen möchte (der Code ist ziemlich kompliziert, deshalb haben wir in den Hafen C# nicht wollen)
Ich konnte den c-Code in Visual Studio importieren und in der Lage, den Code erfolgreich zu kompilieren. Ich weiß, dass wir den C-Code wahrscheinlich als Windows-Dienst implementieren können, aber ich suche nach einer Lösung, die es uns ermöglicht, die C-Methode direkt von C# aus aufzurufen. Irgendwelche Hinweise wird sehr geschätzt! (ist COM Interop in Bezug auf was ich suche zu tun?)
warum nicht Ihre Methoden auf C# implementieren? – Luiscencio
Was ist die kompilierte Ausgabe Ihres C-Codes? Wenn es eine .dll ist und COM unterstützt, sollte es einfach möglich sein, eine "Referenz hinzufügen" aus Visual Studio zu erstellen und zu der DLL-Datei zu navigieren. – Nate
Wenn Sie dies noch nicht getan haben, erscheint das Umbrechen Ihrer Funktionen in einer COM-Klasse und die Verwendung von .NET/COM-Interop als zu viel Arbeit/Overkill. Ich würde diese zwei C-Funktionen einfach in eine DLL setzen und mit P/Invoke auf sie zugreifen, wie von Jason Evans vorgeschlagen. – stakx