2016-07-05 8 views
6

Gibt es Möglichkeit, P/Invoke (dllimport) in .NET Core unter Linux zu implementieren?P-Invoke in. NET-Kern mit Linux

Beispiel:

Ich habe C++ MYLIB.DLL mit .NET Framework erstellt.

Wenn es möglich ist, so zu verwenden, oder es nicht unterstützt, native Win API mit Linux mit .net-Core aufzurufen?

[DllImport("MyLib.dll", CallingConvention = CallingConvention.StdCall)] 
internal static extern long NativeMethod(); 
+2

Sie es versucht haben? Wie ist es gescheitert? – svick

+0

Eine Menge von PInvoke wurde von Microsoft verwendet, um .NET Core selbst zu entwickeln, also bin ich so überrascht, dass Sie gefragt haben. –

Antwort

11

PInvoke sicherlich unterstützt wird (das ist, wie die gesamte Code, der mit dem O arbeitet Schnittstellen), nicht aber im konkreten Fall, dass Sie aufgelistet. Sie können PInvoke nicht zu einer win32-Binärdatei unter Linux bringen, es sei denn, Sie haben eine funktionsfähige Version für Linux selbst erstellt. Realistischerweise müssen Sie eine Linux-Funktion aus einer anderen System-Binärdatei finden, die ähnliche Funktionen bietet, und diese stattdessen verwenden.

5

Sogar dlls existiert nur in Windows OS, Sie können einige Linux-APIs mit PInvoke in .NET Core importieren und verwenden.

Proben:

[DllImport("libc")] 
static extern int read(int handle, byte[] buf, int n); 

[DllImport("libc.so.6")] 
private static extern int getpid(); 

[DllImport("libgtk-x11-2.0.so.0")] 
static extern IntPtr gtk_message_dialog_new(IntPtr parent_window, DialogFlags flags, MessageType type, ButtonsType bt, string msg, IntPtr args); 

Bitte sehen https://developers.redhat.com/blog/2016/09/14/pinvoke-in-net-core-rhel/

https://gist.github.com/martinwoodward/f5b195aa53b4ed52cabaf701486baa79

Verwandte Themen