Entwickler-Ecke
Sonstiges (.NET) - C # .Net Methoden von C heraus aufrufen
doubleII - Sa 04.05.19 20:13
Titel: C # .Net Methoden von C heraus aufrufen
Hallo,
ich versuche C# Methoden von C Projekt heraus aufzurufen, leider finde ich kaum Info darüber.
Hat sich schon jemand mit dem Thema beschäftigt?
Ich habe das Nuget Paket gefunden. Dies gibt die Möglichkeit, C# Methoden in native Anwendungen zu exportieren. Mein Problem ist, dass ich nicht weiß, wie ich die Methoden in C aufrufen kann. Ich habe ins Internet nichts gefunden, was mir weiter helfen könnte.
https://www.nuget.org/packages/UnmanagedExports
Hier anbei ein Beispiel.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public class Library { [DllExport("add", System.Runtime.InteropServices.CallingConvention.Cdecl)] public static int Add(int a , int b) => a + b;
[DllExport("mul", System.Runtime.InteropServices.CallingConvention.Cdecl)] public static int Multiplication(int a, int b) => a * b; } |
Vielen Dank!
:)
Th69 - So 05.05.19 09:02
Das ist direkt nicht möglich, da C# eben auf der
CLR [
https://de.wikipedia.org/wiki/Common_Language_Runtime] aufsetzt (und diese bei einem C oder C++ Programm nicht eingebunden ist).
Du könntest aber ein
C++/CLI [
https://de.wikipedia.org/wiki/C%2B%2B/CLI]-Projekt erstellen, welches als Zwischenhändler (Interop) funktioniert (sofern du dann das C Programm damit zusammen kompilierst und linkst).
Bei diesem C++/CLI-Projekt referenzierst du also dein C#-Projekt und erstellst eine reine C-API (inkl. Headerdatei), welche dann von deinem C-Projekt eingebunden werden kann.
Für die Benutzung von "UnmanagedExports" müßtest du andersherum ein Plugin-System für dein C-Projekt zur Verfügung stellen (was m.E. jetzt ersteinmal ein bißchen mehr Aufwand wäre, als die C++/CLI-Benutzung).
doubleII - So 05.05.19 12:28
Ok, Danke Dir für die Info. Es wäre einfacher, wenn ich rein auf "C" das Zeug programmiere.
jfheins - So 05.05.19 12:40
Also was mit Sicherheit ginge:
- Ein C# Programm, was einzelne C Methoden aufruft
- Deinen C-Code in ein C++ CLI Programm portieren und dann C# Methoden aufrufen
Zum Teil lässt sich ja C Code sogar direkt per copy/paste nach C# übernehmen :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!