Els*_*han 11 pinvoke .net-core
有没有办法(dllimport)在Linux上的.NET Core中实现P/Invoke ?
示例:
我用.net框架编译了C++ MyLib.dll.
如果可以这样使用,或者不支持使用.net-core使用linux调用native win api?
[DllImport("MyLib.dll", CallingConvention = CallingConvention.StdCall)]
internal static extern long NativeMethod();
Run Code Online (Sandbox Code Playgroud)
Eri*_*ino 16
当然支持PInvoke(这是与操作系统接口的所有代码的工作方式),但不是您列出的特定情况.你不能在Linux上PInvoke到win32二进制文件,除非你自己为Linux自己构建了一个与函数兼容的版本.更现实的是,您需要从其他系统二进制文件中找到一个Linux函数,该函数会公开类似的功能,然后再使用它.
小智 8
即使dll仅存在于Windows操作系统中,您也可以使用.NET Core中的PInvoke导入和使用一些Linux API.
样品:
[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);
Run Code Online (Sandbox Code Playgroud)
请参阅https://developers.redhat.com/blog/2016/09/14/pinvoke-in-net-core-rhel/
https://gist.github.com/martinwoodward/f5b195aa53b4ed52cabaf701486baa79
| 归档时间: |
|
| 查看次数: |
8539 次 |
| 最近记录: |