从Microsoft.net调用mono c#代码?

从Microsoft.net调用mono c#代码?,c#,compiler-construction,mono,C#,Compiler Construction,Mono,我有一些用c#编写的神经网络代码,这将得益于使用支持。刚刚发布的支持SIMD的版本,但微软的c#还不支持。由于对我的c#设置感到满意,我想知道我是否可以用mono为这篇文章编写一个lib,并从.net调用它 编辑: 我想我真正想知道的是,有可能编译成类似DLL的东西,然后我可以从dotnet调用它。我听人说,对于iphone来说,mono编译器允许他们为moonlight编译成exe,这样就不会违反iphone的服务条款,所以我想你还能编译成什么 我听Miguel de Icaza在另一个播客节

我有一些用c#编写的神经网络代码,这将得益于使用支持。刚刚发布的支持SIMD的版本,但微软的c#还不支持。由于对我的c#设置感到满意,我想知道我是否可以用mono为这篇文章编写一个lib,并从.net调用它

编辑: 我想我真正想知道的是,有可能编译成类似DLL的东西,然后我可以从dotnet调用它。我听人说,对于iphone来说,mono编译器允许他们为moonlight编译成exe,这样就不会违反iphone的服务条款,所以我想你还能编译成什么

我听Miguel de Icaza在另一个播客节目中说,可以使用mono编译器编译成exe,而不仅仅是中间代码。这意味着什么

这激起了我的好奇心,所以我想我会给它一笔赏金。

来自:

我们的图书馆为读者提供C#后备方案 所有的加速指令。 这意味着如果您的代码在 不提供任何SIMD的机器 支持,或 您正在使用的应用程序中不支持 机器,代码将继续显示 工作正常

这也意味着您可以使用 Mono.simdapi与微软的.NET Windows来原型化和开发您的 编码,然后全速运行 使用单声道


据我所知,这意味着您可以编写使用Mono.Simd的代码,并且可以在.Net下运行它,但不会比常规代码快,因为.Net运行时还不支持Simd。

为了利用Simd功能,运行时应该能够本机支持它。基本上,Mono在运行时特别处理
Mono.Simd
名称空间。显然,Microsoft.NET运行时不支持此功能。但是,提供的
Mono.Simd
程序集是一个完全有效的、用托管代码编写的正常.NET程序集,因此它可以在.NET CLR上运行,但它只是Simd指令功能的软件模拟


您可以在Windows上运行Mono runtime并利用这些功能,但无法直接在.NET上运行一半的应用程序,而在Mono上运行另一半的应用程序(当然,您可以像两个不同的应用程序一样使用通信机制,但在这种情况下根本没有意义)。

基本上,如果您使用Simd编写它,并将dll与代码一起分发,那么如果目标VM支持它,它将使用加速。如果没有,它不会断裂。因此,您可以使用该库,并为运行带有Mono的.NET应用程序的任何程序用户提供速度提升

据说微软正计划在其下一个运行时版本中添加这样的支持,尽管我找不到链接,而且现在手头也没有——如果有人有足够的兴趣,可以从历史备份中挖掘链接