是否可以从.NET core调用linux平台上的共享库(.so)?

Mau*_*oni 6 .net c# cross-platform shared-libraries .net-core

我知道 .NET 核心的目标是跨平台开发,但我正在寻找向后兼容性。如果我有一个可用的 Linux 库(也许是遗留的),并且我希望从 Linux 平台的 .NET Core 应用程序调用它的函数。是否可以?

我不是在谈论 ASP.NET core,我需要它用于桌面应用程序。

pie*_*rs7 1

是的:https: //github.com/dotnet/corefx/issues/343

话虽这么说,我承认我还没有真正尝试过。我已经在 Mono 上使用过这个了,因为它的价值,并且绝对值得阅读他们的文档:http://www.mono-project.com/docs/advanced/pinvoke/ ...因为.net core似乎采取了大致相同的方法(例如:保留 p 调用的库的文件扩展名,因此系统可以负责链接到正确的版本等...)

例如,.net core 本身是如何做到这一点的:

const string LIBC = "libc";

[DllImport(LIBC, EntryPoint = "getenv")]
private static extern IntPtr getenv_core(string name);
Run Code Online (Sandbox Code Playgroud)

https://github.com/dotnet/corefx/blob/79d44f202e4b6d000ca6c6885a24549a55db38f1/src/System.Console/src/Interop/Interop.manual.Unix.cs