C# 是否可以从.NETCore调用linux平台上的共享库(.so)?
我知道.NET核心的目标是跨平台开发,但我正在寻找向后兼容性。如果我有一个可用的linux库(可能是遗留的),并且我希望它的函数可以从linux平台的.NET核心应用程序调用。可能吗 我不是说ASP.NET core,我需要它作为桌面应用程序。是: 话虽如此,我承认我还没有真正尝试过。我在Mono上用了很多,值得一读的是,他们关于这方面的文档:。。。因为.NETCore似乎采取了大致相同的方法(例如:为p调用的库保留文件扩展名,这样系统就可以负责链接到正确的版本等等) 例如.net内核本身是如何做到这一点的:C# 是否可以从.NETCore调用linux平台上的共享库(.so)?,c#,.net,shared-libraries,cross-platform,.net-core,C#,.net,Shared Libraries,Cross Platform,.net Core,我知道.NET核心的目标是跨平台开发,但我正在寻找向后兼容性。如果我有一个可用的linux库(可能是遗留的),并且我希望它的函数可以从linux平台的.NET核心应用程序调用。可能吗 我不是说ASP.NET core,我需要它作为桌面应用程序。是: 话虽如此,我承认我还没有真正尝试过。我在Mono上用了很多,值得一读的是,他们关于这方面的文档:。。。因为.NETCore似乎采取了大致相同的方法(例如:为p调用的库保留文件扩展名,这样系统就可以负责链接到正确的版本等等) 例如.net内核本身是如何
const string LIBC = "libc";
[DllImport(LIBC, EntryPoint = "getenv")]
private static extern IntPtr getenv_core(string name);
看看SWIG。这是一种包装共享库的简单方法,它为您生成所有P/Invoke代码,并在.so库和C#代码之间映射任何头文件(想想结构)。我们围绕我们想要使用的.so库创建了一个简单的cpp包装器,然后让SWIG发挥它的魔力。我们现在有了一个C#库,可以从调用linux库函数的.Net代码(一个简单的控制台应用程序)调用它。我们已经在PI上完成了这项工作,在运行Ubuntu、CentOS和Debian的unix主机上取得了巨大成功 .NETCore本身在Linux上使用了很多这样的库。您可以查看其源代码,了解如何在那里制作PInvoke吗?另请参见: