我理解.NET核心的目标是跨平台开发,但我正在寻找向后兼容性。如果我有一个可用的Linux库(也许是遗留的),我希望从Linux平台的.NET核心应用程序中调用它的函数。有可能吗?
我不是在谈论ASP.NET核心,我需要它用于桌面应用程序。
答案 0 :(得分:1)
是:https://github.com/dotnet/corefx/issues/343
话虽这么说,我承认还没有真正尝试过。我已经在Mono上使用了它,因为它的价值,并且绝对值得阅读他们的文档:http://www.mono-project.com/docs/advanced/pinvoke/ ...因为.net核心似乎需要大致相同方法(例如:保留p调用库的文件扩展名,以便系统可以处理链接到正确的版本等...)
例如.net核心本身如何做到这一点:
const string LIBC = "libc";
[DllImport(LIBC, EntryPoint = "getenv")]
private static extern IntPtr getenv_core(string name);
答案 1 :(得分:0)
看看SWIG。这是一种包装共享库的简单方法,它为您生成所有P / Invoke代码,并映射.so库和C#代码之间的任何头文件(思想结构)。我们在我们想要使用的.so库周围创建了一个简单的cpp包装器,然后让SWIG发挥其魔力。我们现在有一个C#库,可以从我们的.Net代码(一个简单的控制台应用程序)调用它来调用我们的linux库函数。我们在运行Ubuntu,CentOS和Debian的unix主机上的PI上完成了这项工作,取得了巨大的成功。 http://www.swig.org/