是否可以在Linux上使用.Net Core 3.1创建C ++ / CLI代码的C#DLL

SemjonMössinger

这可能是一个非常具体的问题。但这对于其他人也可能很有趣。

设置可能很常见:我们使用C ++和Linux开发嵌入式设备,并为此构建了一个构建系统。借助我们的设备,我们使用基于DLL的插件机制发布了C#桌面应用。该插件包含嵌入式设备和应用程序都使用的共享逻辑。为了使过程轻松,最好在我们的Linux构建系统上创建DLL(因此,我想使用.Net Core,而不是“普通” .Net)。

据我的反复试验显示,即使使用.Net Core 3.1,这也是不可能的。你能确认吗?该软件仅适用于Windows(尽管它是在Linux上编译的)-从理论上讲,由于.Net Core在3.1版中支持CLI / C ++(https://devblogs.microsoft.com/dotnet/announcing-net-core-3 -1 /)。

我试过的

  1. 我使用控制台应用程序将Linux上的纯C#代码编译为在Windows上成功运行的exe dotnet
  2. 我已按照以下指南使用示例代码在Windows上成功创建了一个简单的C ++ / CLI测试应用程序:https : //devblogs.microsoft.com/cppblog/an-update-on-cpp-cli-and-dotnet-core/
  3. 最后,我采取了(可能是太幼稚的方法)将测试应用程序的.vcxproj替换为步骤1的.csproj(.csproj似乎会自动检测文件)。我收到以下错误消息:

引用CSC:错误CS5001:程序不包含适用于入口点的静态“主”方法[/home/vagrant/Projects/cpp_dotnet_on_linux/cs_on_linux.csproj]

有什么我可以改善的事情吗?还是根本就不可能完成任务(将cpp文件手动添加到.csproj等)?恐怕在技术上这是不可能的,因为我猜想.Net Core在Linux上缺少C ++编译器,但我不确定。

奥马吉德

Linux不支持C ++ / CLI。

一些来源:

https://devblogs.microsoft.com/cppblog/the-future-of-cpp-cli-and-dotnet-core-3/

我们目前还没有针对macOS或Linux的C ++ / CLI计划。此外,.NET Core不支持使用“ / clr:pure”和“ / clr:safe”进行编译。

https://github.com/dotnet/coreclr/issues/659#issuecomment-539742740

Linux上的C ++ / CLI将不受支持,这将非常具有挑战性。它将需要Microsoft VC ++来支持Linux,或者需要Clang或GCC来支持C ++ / CLI。这些都是巨大的项目,回报不确定。还不清楚Clang或GCC是否会允许我们上游进行更改。永远保持快速发展的编译器项目的最新分支非常昂贵。我们没有计划进行这些项目中的任何一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档